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