我试图在禁用android中的Google分析之前发送一个事件。但是,这个事件并没有出现在实时GA控制台中。
tracker.send(new HitBuilders.EventBuilder()
.setCategory(category)
.setAction(action)
.setLabel(label)
.build());
//disable GA
GoogleAnalytics.getInstance(this).setAppOptOut(true);
谢谢你的建议。
发布于 2015-03-03 13:56:08
如果启用Google日志记录,则可以看到,当您调用setAppOptOut(真)时,Google将清除所有排队的点击,因为它上次将点击发送到Google服务器:
V/GAV4﹕ Thread[GAThread,5,main]: clearHits called
正如你自己注意到的那样,dispatchLocalHits()
没有帮助,因为它安装Google服务后什么也不做。您需要做的是等待调用setAppOptOut(true)
,直到您的点击发送完毕。然而,由于您不知道何时发出点击,这不是一件容易的事情。
您可以指定应用程序在ga_dispatchPeriod
设置下的调度周期(默认为30分钟)。如果您等待的时间超过配置的分派期,您应该相当肯定您的事件已经发送,但是这并不一定,因为如果您目前没有任何网络连接,GA可能会在发送数据时等待更长的时间。
如果你想采用这种方法,你必须确保等待在不同的会话中有效,因为Google服务是设备上的一个单独的服务,即使您重新启动应用程序,它也会保留您的点击量。因此,选择退出下一次启动你的应用程序也是行不通的。
然而,选择退出30分钟以上的等待可能对您的用户不是很好,因为这为收集和提交数据提供了大量的时间,因为用户认为他们已经选择退出。
更好的方法可能是拥有自己的内部包装类,应用程序的所有部分都调用这个类来报告数据。那么每个报告方法都可以检查是否启用了,永远不要调用任何真正的方法。
通过这种方式,您可以确保您的最终事件被发送到Google,而在此之后不再发送事件,即使您没有调用setAppOptOut(true)
。
请注意,只有在不依赖任何自动跟踪(如不明确例外的自动报告或自动屏幕测量 )的情况下,这才有效。
https://stackoverflow.com/questions/28688695
复制