2017-04-14 33 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