2017-04-14 77 views
0

我將谷歌分析整合到我的應用程序中跨所有活動和片段。 參考developer docs,我可以很容易地將跟蹤器與活動聯繫起來。將谷歌分析跟蹤器添加到片段

AnalyticsApplication application = (AnalyticsApplication) getApplication(); 
mTracker = application.getDefaultTracker(); 

但是,如何獲得一個共享跟蹤器實例的片段?每個片段代表一個屏幕視圖。

另外,如何獲取每個配置的ScreenName所用的時間?

+0

目前我已經把從MainActivity獲得的跟蹤器放在全局範圍內,並且在必要的frag中使用了實例但我正在尋找更好的做法。 – jay

+0

檢查[這](http://stackoverflow.com/questions/36458222/getdefaulttracker-from-a-class-that-extends-inputmethodservice) –

回答

0

在你的應用程序類,你要跟蹤的事件每個片段寫這個..

private Tracker mTracker; 

/** 
* Gets the default {@link Tracker} for this {@link Application}. 
* 
* @return tracker 
*/ 
synchronized public Tracker getDefaultTracker() { 
    if (mTracker == null) { 
     GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
     // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG 
     mTracker = analytics.newTracker(R.xml.app_tracker); 
    } 
    return mTracker; 
} 

public void trackEvent(String category, String action, String label) { 
    Tracker traker = getDefaultTracker(); 
    // Build and send an Event. 
    traker.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build()); 
} 

現在,然後做這個

YourApplicationClass.getInstance().trackEvent("Category", "Action", "Label"); 

對於來自片段發送您的網名,這樣做

YourApplcationClass application = (YourApplcationClass) getActivity().getApplication(); 
    mTracker = application.getDefaultTracker(); 
    mTracker.setScreenName("FragmentName"); 
+0

我已經實現了類似的東西。很好奇,如果我可以通過google sdk提供的一些方法來避免這個鍋爐代碼。 – jay