在测试或开发时禁用Android App中的GoogleAnalytics

时间:2012-09-07 08:22:13

标签: android testing analytics

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

最好的方法是什么?

谢谢!

8 个答案:

答案 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视图中的所有调试数据。您还可以添加新视图以显示调试数据。