Google分析在setAppOptOut之前不发送事件(true)

时间:2015-02-24 05:23:26

标签: android google-analytics google-analytics-api google-analytics-sdk

我尝试在Android中禁用Google分析之前发送一个事件。但是,该事件并未显示在实时GA控制台中。

    tracker.send(new HitBuilders.EventBuilder()
                    .setCategory(category)
                    .setAction(action)
                    .setLabel(label)
                    .build());
    //disable GA
    GoogleAnalytics.getInstance(this).setAppOptOut(true);

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

如果您启用Google Analytics记录,则可以看到当您调用setAppOptOut(true)时,Google Analytics会清除自上次向Google Analytics服务器发送匹配以来的所有排队点击:

V/GAV4﹕ Thread[GAThread,5,main]: clearHits called

正如您注意到自己dispatchLocalHits()没有帮助,因为它does nothing with Google Play Services installed。您需要做的是等待调用setAppOptOut(true),直到您的命中被发送。但是,由于您不知道何时发送命中,因此这不是一件容易的事。

您可以使用ga_dispatchPeriod设置指定应用应具有的调度周期(默认值为30分钟)。如果您等待超过配置的调度周期,您应该确定您的事件已被发送,但是这不能保证,因为如果您此时没有任何网络连接,GA可能会等待更长时间的数据发送。 / p>

如果您采用这种方法,您必须确保等待在会话期间有效,因为Google Play服务是设备上的单独服务,即使您重新启动应用,它也会保留您的点击量。因此,选择下次启动您的应用时也不会有效。

然而,等待选择超过30分钟对您的用户来说可能不是很好,因为在用户认为他们选择退出数据后,这会花费大量时间来收集和提交数据。

更好的方法可能是拥有自己的内部Google Analytics包装类,应用程序的所有部分都会调用该类来报告数据。然后,每种报告方法都可以检查Google Analytics是否已启用,从不调用任何真正的Google Analytics方法。

通过这种方式,您可以确保将最终事件发送到Google Analytics,而在此之后不再发送任何事件,即使您未致电setAppOptOut(true)

请注意,这仅适用于您不依赖automatic reporting of uncaught exceptionsautomatic screen measurement等任何自动跟踪的情况。