谷歌分析碎片屏幕视图

mar*_*ino 6 android google-analytics android-fragments

我的应用程序有一个活动和许多片段.我已经阅读了关于这个问题的所有主题,没有人能够看到我的工作.我已尝试使用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());
Run Code Online (Sandbox Code Playgroud)

任何建议都将受到高度赞赏!

Fer*_*gre 5

实际上我觉得我可能找到了让它有效的方法.阅读文档:https://developers.google.com/analytics/devguides/collection/android/v4/dispatch

默认情况下,每30分钟从Google Analytics SDK for Android发送数据.

是的,我的想法是"什么???? 30分钟?不是假设是实时的吗?" 无论如何,阅读更多:

以编程方式设置调度周期:

// Set the dispatch period in seconds.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(15);
Run Code Online (Sandbox Code Playgroud)

要在XML配置文件中设置调度周期:

<integer name="ga_dispatchPeriod">30</integer>
Run Code Online (Sandbox Code Playgroud)

还有什么...

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

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

好吧,也许你在这里发现了一个有争议的,负值还是不到1?我试过,它不到1!(0或负数将禁用定期调度).

如果您更喜欢手动调度,那将是,例如:

tracker.setScreenName(TAG);
tracker.send(new HitBuilders.AppViewBuilder().build());
GoogleAnalytics.getInstance(getActivity().getBaseContext()).dispatchLocalHits();
Run Code Online (Sandbox Code Playgroud)

请注意,您可以随时调用dispatchLocalHits()(甚至可以创建一个调用该函数的按钮).顺便说一句,那段代码就在我的片段上(在onResume()方法中).

文档也说:

如果用户失去网络访问权限或退出应用程序仍有等待>分派的命中,则这些匹配将保留在本地存储中.它们将在您的应用程序运行的下一个>时间发送,并调用调度.

但我不确定这是否适用于手动和定期发送.我试了一下,两个似乎都在工作:)