2.8 在Android应用中使用Google Analytics
Ashwini Shahapurkar
2.8.1 问题
开发人员往往希望跟踪用户使用的应用程序功能。你如何确定自己的应用程序用户最常使用的是哪个功能?
2.8.2 解决方案
可以使用Google Analytics,根据定义的条件跟踪应用程序,这和网站跟踪的机制相近。
2.8.3 讨论
在应用程序中使用Google Analytics之前,需要一个分析账户和Google Analytics SDK。
在项目的AndroidManifest.xml文件中添加如下授权:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
现在,登录你的分析账户并为应用程序创建网站简档。网站的URL可以是虚拟的,但是应该有描述性,建议使用逆序的包名称。例如,如果应用程序包名称为com.example.analytics.test,记下这个ID,将在应用程序中用到它。这个Web属性ID又称跟踪代码的UA号,是网站简档的唯一标识。
注意: 你必须在应用程序中提及将要收集应用程序中的匿名用户数据以跟踪应用程序。
现在,我们已经为跟踪应用程序做好了准备。调用GoogleAnalyticsTracker.getInstance()方法获取跟踪器的单例实例。然后调用该类的start()方法启动跟踪。通常,你希望跟踪的不仅是应用程序的活动。在这种情况下,将跟踪器实例放在应用的Application类的OnCreate()方法中是一个好主意(见例2-9)。
例2-9:应用程序跟踪的实现
public class TestApp extends Application {
/*定义应用程序简档创建之后获取的Web属性ID*/
private String webId = "UA-NNNNNNNN-Y";
/*Analytics跟踪器实例*/
GoogleAnalyticsTracker tracker;
@Override
public void onCreate() {
super.onCreate();
//获取单态的跟踪器实例
tracker = GoogleAnalyticsTracker.getInstance();
//用你的属性ID启动跟踪应用
tracker.start(webId,getApplicationContext());
//这里加入应用程序相关的代码
}
/* 跟踪器实例获取程序,在活动获取跟踪器实例引用的时候调用*/
public GoogleAnalyticsTracker getTracker() {
return tracker;
}
}
可以调用跟踪器实例的trackPageView()和trackEvent()方法(见例2-10)跟踪活动中的视图和事件。
例2-10:带跟踪的主活动
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//track the page view for the activity
GoogleAnalyticsTracker tracker = ((TestApp)getApplication()).getTracker();
tracker.trackPageView("/MainActivity");
/*You can track events like button clicks*/
findViewById(R.id.actionButton).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
GoogleAnalyticsTracker tracker =
((TestApp)getApplication()).getTracker();
tracker.trackEvent("Action Event",
"Action Button", "Button clicked",0);
tracker.dispatch();
}
});
// 在这里放入程序代码
}
}
记住,事件和页面视图在调用跟踪器上的dispatch()方法之前不会发送给服务器,可以在该方法内跟踪所有活动和事件。