我在我的 Android 应用程序中使用 EasyTracker,当应用程序处于“开发”或“测试”模式时,我需要一种方法来禁用分析跟踪(我在常量文件中有一个标志来区分)。
最好的方法是什么?
谢谢!
我相信使用 Analytics 第 4 版执行此操作的正确方法是使用 Opt Out 方法
GoogleAnalytics.getInstance(this).setAppOptOut(true);
如果您在调试模式下构建,则可以设置该方法。IE。
GoogleAnalytics.getInstance(this).setAppOptOut(BuildConfig.DEBUG);
我正在使用类似的东西来允许用户选择退出分析。
我在以下链接中找到了此信息:https ://developers.google.com/analytics/devguides/collection/android/v4/advanced
编辑:刚刚看到原始问题的日期,但我想无论如何我都会添加这个答案,因为这是我正在寻找的东西。
更新:随着适用于 Android 的 Google Analytics v3 的发布,
SDK 提供了一个 dryRun 标志,设置后会阻止任何数据发送到 Google Analytics。每当您测试或调试实现并且不希望测试数据出现在您的 Google Analytics(分析)报告中时,都应设置 dryRun 标志。
要设置试运行标志:
// 当设置了空运行时,命中不会被分派,但仍会被记录,就像它们被分派一样。
GoogeAnalytics.getInstance(this).setDryRun(true);
+++ 我的旧答案 +++
analytics.xml
当您处于开发模式时,只需在文件中注释以下行。
<string name="ga_trackingId">UA-****</string>
Google Analytics 将无法找到任何跟踪 ID,因此 EasyTracker 将无法完成其工作。当您构建要发布的应用程序时,取消注释该行就可以了。
如果您正在构建一个独立的应用程序(不是库),这将是最简单的方法,让构建系统确定它是否是调试构建。
if(BuildConfig.DEBUG){
GoogleAnalytics.getInstance(this).setDryRun(true);
}
我在网上看到这种方法不适用于库项目,因为构建工具中存在错误,它没有BuildConfig.DEBUG
为库正确设置标志。不确定这个问题现在是否已修复。
您可以使用具有静态布尔值的类,例如 DEBUG:
public final class BuildMode {
public final static boolean DEBUG = true;
}
在代码中,只需使用:
if (BuildMode.DEBUG) ...
这是适用于所有 android SDK 版本的解决方案!
firebase 的最新版本有这个方法,可以放在 App 类中:
FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(!BuildConfig.DEBUG);
我正在做的是通过在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
我的技术是在发布时间之前更改android:versionName
Android Manifest 中的内容。
例如,1.0.0.ALPHA
在构建发布 APK 之前,您可以更改为1.0.0
. 这样,您以后仍然可以查看所有崩溃报告,但它们将在分析中分组。
此 SO 票谈论使用标志BuildConfig.DEBUG
有条件地配置分析并Atul Goyal's
回答引用. 如果您不关心将来在调试期间看到崩溃报告并假设标志正常工作,那么这两件事可能是一个不错的设置。dryRun
v3
BuildConfig.DEBUG
我对这个问题有不同的方法。有时您仍想测试分析是否正常工作,但只想在生产报告中过滤掉测试数据。我的解决方案是在 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 视图中过滤掉所有调试数据。您还可以添加一个新视图来显示调试数据。