我尝试在Android中禁用Google分析之前发送一个事件。但是,该事件并未显示在实时GA控制台中。
tracker.send(new HitBuilders.EventBuilder()
.setCategory(category)
.setAction(action)
.setLabel(label)
.build());
//disable GA
GoogleAnalytics.getInstance(this).setAppOptOut(true);
感谢您的任何建议。
答案 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 exceptions或automatic screen measurement等任何自动跟踪的情况。