谷歌分析碎片化屏幕视图

6

我的应用程序有一个活动和许多片段。我已经阅读了关于这个问题的所有主题,但是没有一个人能够像我所看到的那样工作。 我尝试过使用ga v3和v4,遵循以下方式:

问题在于,两种方式都只检索我执行的第一个调用。当我更改片段并以相同方式执行另一个调用时,“实时”分析不会更改。 这两个片段都从每个片段的onStart()方法中执行。

    // Using ga v4
    Tracker t = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1");
    t.setScreenName("/home");
    t.send(new HitBuilders.AppViewBuilder().build());

    // Using ga v3
    EasyTracker _tracker = EasyTracker.getInstance(getActivity());
    _tracker.set(Fields.SCREEN_NAME, "/discover");
    _tracker.send(MapBuilder.createAppView().build());

任何建议将不胜感激!
1个回答

5
实际上我认为我可能已经找到了使它运作的方法。阅读文档:https://developers.google.com/analytics/devguides/collection/android/v4/dispatch 默认情况下,来自Android版Google Analytics SDK的数据每30分钟就会被发送。
是的,我的想法是“什么???30分钟?难道不应该实时处理吗?”无论如何,再继续阅读一些内容:
要通过编程方式设置调度周期:
// Set the dispatch period in seconds.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(15);

要在XML配置文件中设置调度周期,请按以下步骤操作:
<integer name="ga_dispatchPeriod">30</integer>

更多信息...

设置负值将禁用定期调度,如果您想发送任何数据到Google Analytics,则需要使用手动调度。

// Disable periodic dispatch by setting dispatch period to a value less than 1.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(0);

好的,也许你在这里发现了一个有争议的问题,负值或小于1?我试过了,确实小于1!(0或负数将禁用周期性调度)。

如果您更喜欢手动分派,那么可以这样做:

tracker.setScreenName(TAG);
tracker.send(new HitBuilders.AppViewBuilder().build());
GoogleAnalytics.getInstance(getActivity().getBaseContext()).dispatchLocalHits();

请注意,您可以随时调用dispatchLocalHits()(甚至可以制作一个调用该函数的按钮)。顺便说一下,那段代码在我的片段中(在onResume()方法中)。
此外,文档还指出:
如果用户失去网络访问权限或退出应用程序,而仍有等待分派的命中,则这些命中将持久保存在本地存储中。它们将在下次运行应用程序并调用分派时被分派。
但我不确定这是否适用于手动和定期分派。我尝试了一下,两者似乎都有效 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接