3

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

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

感谢您的任何建议。

4

1 回答 1

1

如果您启用 Google Analytics 日志记录,您可以看到,当您调用 setAppOptOut(true) 时,Google Analytics 将清除自上次向 Google Analytics 服务器发送命中后所有排队的命中:

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

正如您注意到的那样,您自己dispatchLocalHits()并没有帮助,因为它对已安装的 Google Play Services 没有任何作用。您需要做的是等待调用setAppOptOut(true),直到您的点击被发送。但是,由于您不知道点击何时发送,这不是一件容易的事。

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

如果您采用这种方法,则必须确保等待跨会话有效,因为 Google Play 服务是设备上的一项单独服务,即使您重新启动应用程序,它也会保留您的点击。因此,在您的应用程序的下一次启动时选择退出也将不起作用。

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

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

通过这种方式,您可以确保您的最终事件已发送到 Google Analytics,而在此之后即使您不调用,也不会再发送任何事件setAppOptOut(true)

请注意,这仅在您不依赖任何自动跟踪(如未捕获异常的自动报告自动屏幕测量)时才有效。

于 2015-03-03T21:56:08.570 回答