【问题标题】:Google analytics doesn't send event before setAppOptOut(true)谷歌分析不会在 setAppOptOut(true) 之前发送事件
【发布时间】:2015-02-24 05:23:26
【问题描述】:

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

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

感谢您的建议。

【问题讨论】:

  • 实时控制台至少在 60-90 秒后显示事件
  • @diva 是的,我知道,我测试了很多
  • 那么可能还有其他问题,可能是网络或GA的ID
  • 我认为没有网络问题,因为只有这个方法没有出现。应用程序中的其他分析流程(事件跟踪不在 setAppOptOut(true) 之前)工作正常。
  • 哎呀,api 基本上禁用了 GA 跟踪

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


【解决方案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 可能会等待更长时间发送数据。

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

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

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

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

请注意,这仅在您不依赖任何自动跟踪(如 automatic reporting of uncaught exceptionsautomatic screen measurement)时才有效。

【讨论】:

  • 感谢您的回复。但是,我已经实现了自己的包装类来管理 Ga 事件。我们无法控制调度真的很奇怪
  • 我注意到你在聊天中自己解决了这个问题,但我想我会为以后发现这个问题的其他有同样问题的人留下答案。
猜你喜欢
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 2022-10-24
  • 2016-05-21
  • 1970-01-01
相关资源
最近更新 更多