2014-04-30 108 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