2014-04-30 76 views
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()); 

任何建议将不胜感激!

回答

5

其实我想我可能会找到使它工作的方法。阅读文档:https://developers.google.com/analytics/devguides/collection/android/v4/dispatch

默认情况下,数据从谷歌Analytics(分析)SDK出动 Android的每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()方法中)。

而且该文件说:

如果用户丢失网络访问或同时还有命中等待>布控,命中那些在本地存储持久退出你的应用程序。他们将在下一次>您的应用程序正在运行并调用调度时发送。

但我不确定这是否适用于手动和定期调度。我试了一下,似乎都在工作:)

+0

好的和有用的答案,谢谢@Ferran – marino