我在我的Android应用程序中使用EasyTracker,当应用程序处于“开发”或“测试”模式时,我需要一种方法来禁用Google Analytics跟踪(我在常量文件中有一个标志可以区分)。
最好的方法是什么?
谢谢!
答案 0 :(得分:15)
我认为使用分析版本4执行此操作的正确方法是使用选择退出方法
GoogleAnalytics.getInstance(this).setAppOptOut(true);
如果您在调试模式下构建,则可以设置该方法。即
GoogleAnalytics.getInstance(this).setAppOptOut(BuildConfig.DEBUG);
我正在使用类似的东西来允许用户选择退出分析。
我在以下链接中找到了此信息:https://developers.google.com/analytics/devguides/collection/android/v4/advanced
编辑:刚看到原始问题的日期,但我想我会添加这个答案,因为这是我正在寻找的东西。
答案 1 :(得分:10)
更新:发布Google Analytics v3 for Android,
SDK提供了一个dryRun标志,在设置时会阻止任何数据 被发送到Google Analytics。每次都应该设置dryRun标志 您正在测试或调试实现,不想测试 要在Google Analytics报告中显示的数据。
设置干运行标志:
//设置干运行时,不会发送命中,但仍然会发送 记录好像被派遣一样。
<强> GoogeAnalytics.getInstance(本).setDryRun(真); 强>
+++我的旧答案+++
在开发模式下,只需在analytics.xml
文件中注释以下行。
<string name="ga_trackingId">UA-****</string>
Google Analytics无法找到任何跟踪ID,因此EasyTracker将无法完成其工作。 当您构建要发布的应用程序时,取消注释该行,您就可以开始使用了。
答案 2 :(得分:5)
如果您正在构建独立应用程序(而不是库),这将是最简单的方法,让构建系统弄清楚它是否是调试版本。
if(BuildConfig.DEBUG){
GoogleAnalytics.getInstance(this).setDryRun(true);
}
我在网上看到这种方法对于库项目不起作用,因为构建工具中存在错误,它没有为库正确设置BuildConfig.DEBUG
标志。不确定此问题现在是否已解决。
答案 3 :(得分:3)
你可以使用一个带有静态布尔值的类,让我们说这样的DEBUG:
public final class BuildMode {
public final static boolean DEBUG = true;
}
在代码中,只需使用:
if (BuildMode.DEBUG) ...
这是适用于所有Android SDK版本的解决方案!
答案 4 :(得分:1)
我正在做的是通过在analytics.xml中设置一个负期来禁用定期调度:
<integer name="ga_dispatchPeriod">-60</integer>
或者您可以使用您的旗帜以编程方式执行此操作:
if (testingMode) {
GAServiceManager.getInstance().setDispatchPeriod(-1);
} else {
GAServiceManager.getInstance().setDispatchPeriod(60);
}
除非您手动执行,否则不会发送匹配。
如果您只使用定期调度(从不手动调用.dispatch()
),这应该可行。我猜,在第二天凌晨4点之前没有发送的点击被丢弃,因为它们没有出现在报告中。
请参阅Google Analytics开发人员指南:
注意:必须在第二天凌晨4点发送和接收数据, 在每个配置文件的本地时区。以后收到的任何数据 而不会出现在报告中。
更多信息:https://developers.google.com/analytics/devguides/collection/android/v2/dispatch
答案 5 :(得分:1)
我的技巧是将Android Manifest中的android:versionName
更改为发布时间。
例如,1.0.0.ALPHA
直到构建发布APK为止,此时您可以更改为1.0.0
。这样,您以后仍可以查看所有崩溃报告,但它们将分组为分析。
This SO ticket谈到使用BuildConfig.DEBUG
标志有条件地配置分析,Atul Goyal's
回答引用dryRun
中的v3
标记。如果您不关心将来在调试期间看到崩溃报告,并假设BuildConfig.DEBUG
标志正常工作,那么这两件事可能是一个很好的设置。
答案 6 :(得分:1)
firebase的最新版本具有可以放在App类中的此方法:
FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(!BuildConfig.DEBUG);
答案 7 :(得分:0)
我对这个问题有不同的看法。有时您仍然希望测试分析是否正常工作,但是只想在生产报告中过滤测试数据。我的解决方案是在GA中创建一个自定义会话范围的维度(即AppBuild),用于跟踪您是否正在运行应用程序的调试或生产版本的属性。在创建Tracker后的代码中,输入:
// replace 1 with the correct dimension number if you have other dimensions defined
tracker.set("&cd1", BuildConfig.DEBUG ? "debug" : "production");
然后创建或修改您的GA视图,在AppBuild上添加过滤器,不包括调试。这应该过滤掉GA视图中的所有调试数据。您还可以添加新视图以显示调试数据。