代码之家  ›  专栏  ›  技术社区  ›  MataMix

测试或开发时禁用Android应用程序中的GoogleAnalytics

  •  12
  • MataMix  · 技术社区  · 13 年前

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

    最好的方法是什么?

    谢谢

    8 回复  |  直到 13 年前
        1
  •  17
  •   Talung    11 年前

    我认为使用第4版分析的正确方法是选择退出方法

    GoogleAnalytics.getInstance(this).setAppOptOut(true);
    

    如果在调试模式下生成,则可以将该方法设置为已设置。即。

    GoogleAnalytics.getInstance(this).setAppOptOut(BuildConfig.DEBUG);
    

    我正在使用类似的东西来允许用户选择退出分析。

    我在以下链接中找到了这些信息: https://developers.google.com/analytics/devguides/collection/android/v4/advanced

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

        2
  •  10
  •   Community Mohan Dere    6 年前

    更新:随着的发布 Google Analytics v3 for Android ,

    SDK提供了一个dryRun标志,当设置该标志时,将阻止任何数据 发送到Google Analytics。每当 您正在测试或调试实现,但不希望进行测试 数据显示在您的谷歌分析报告中。

    要设置试运行标志:

    //当设置了试运行时,命中将不会被发送,但仍将被发送 像被派遣一样登录。

    谷歌分析.getInstance(this).setDryRun(true);

    +++我的老答案+++

    只需在您的 analytics.xml 文件。

    <string name="ga_trackingId">UA-****</string>
    

    谷歌分析无法找到任何跟踪id,因此EasyTracker将无法完成其工作。 当你为发布构建应用程序时,取消对行的注释,你就可以开始了。

        3
  •  5
  •   Nimesh Madhavan    11 年前

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

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

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

        4
  •  3
  •   Iulia Barbu    13 年前

    你可以使用一个带有静态布尔值的类,比如说DEBUG,如下所示:

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

    在代码中,只需使用:

    if (BuildMode.DEBUG) ...
    

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

        5
  •  3
  •   smiki    6 年前

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

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

        6
  •  1
  •   Eduardo Iriarte Gahete    13 年前

    我正在做的是通过在analytics.xml中设置一个负周期来禁用定期调度:

    <integer name="ga_dispatchPeriod">-60</integer>
    

    或者您可以使用您的标志以编程方式执行此操作:

    if (testingMode) {
        GAServiceManager.getInstance().setDispatchPeriod(-1);
    } else {
        GAServiceManager.getInstance().setDispatchPeriod(60);
    }
    

    这样,除非您手动执行,否则不会发送命中数。

    如果只使用定期调度(从不调用 .dispatch() 手动)。我想,第二天凌晨4点之前没有发送的点击量不知何故被丢弃了,因为它们无论如何都没有出现在报告中。

    请参阅《谷歌分析开发者指南》:

    注: 数据必须由发送和接收 次日凌晨4点 , 在每个配置文件的本地时区中。以后收到的任何数据 则不会出现在报告中。

    更多信息: https://developers.google.com/analytics/devguides/collection/android/v2/dispatch

        7
  •  1
  •   Community Mohan Dere    9 年前

    我的技巧是改变 android:versionName 在Android Manifest中,直到发布时间。

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

    This SO ticket 谈论使用 BuildConfig.DEBUG 标志以有条件地配置分析和 Atul Goyal's 答案参考 dryRun 插旗 v3 。如果您不关心将来在调试期间看到崩溃报告,并且假设 构建配置.DEBUG 标志工作正常。

        8
  •  0
  •   ekcr1    9 年前

    我对这个问题有不同的看法。有时,您仍然想测试分析是否正常工作,但只想在生产报告中过滤测试数据。我的解决方案是在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视图中的所有调试数据。您还可以添加一个新视图来显示调试数据。