12

我在我的 Android 应用程序中使用 EasyTracker,当应用程序处于“开发”或“测试”模式时,我需要一种方法来禁用分析跟踪(我在常量文件中有一个标志来区分)。

最好的方法是什么?

谢谢!

4

8 回答 8

17

我相信使用 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

编辑:刚刚看到原始问题的日期,但我想无论如何我都会添加这个答案,因为这是我正在寻找的东西。

于 2014-10-22T06:04:55.720 回答
10

更新:随着适用于 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 将无法完成其工作。当您构建要发布的应用程序时,取消注释该行就可以了。

于 2013-04-09T13:23:07.280 回答
5

如果您正在构建一个独立的应用程序(不是库),这将是最简单的方法,让构建系统确定它是否是调试构建。

if(BuildConfig.DEBUG){
    GoogleAnalytics.getInstance(this).setDryRun(true);
}

我在网上看到这种方法不适用于库项目,因为构建工具中存在错误,它没有BuildConfig.DEBUG为库正确设置标志。不确定这个问题现在是否已修复。

于 2015-01-25T13:16:31.003 回答
3

您可以使用具有静态布尔值的类,例如 DEBUG:

public final class BuildMode {
        public final static boolean DEBUG = true;
}

在代码中,只需使用:

if (BuildMode.DEBUG) ...

这是适用于所有 android SDK 版本的解决方案!

于 2012-09-07T08:30:41.107 回答
3

firebase 的最新版本有这个方法,可以放在 App 类中:

FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(!BuildConfig.DEBUG);

于 2020-07-21T08:15:24.660 回答
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

于 2012-12-04T13:39:31.647 回答
1

我的技术是在发布时间之前更改android:versionNameAndroid Manifest 中的内容。

例如,1.0.0.ALPHA在构建发布 APK 之前,您可以更改为1.0.0. 这样,您以后仍然可以查看所有崩溃报告,但它们将在分析中分组。

此 SO 票谈论使用标志BuildConfig.DEBUG有条件地配置分析并Atul Goyal's回答引用. 如果您不关心将来在调试期间看到崩溃报告并假设标志正常工作,那么这两件事可能是一个不错的设置。dryRunv3BuildConfig.DEBUG

于 2014-01-14T19:41:06.517 回答
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 视图中过滤掉所有调试数据。您还可以添加一个新视图来显示调试数据。

于 2017-02-07T08:13:27.280 回答