这段时间因公司项目需要加入用户行为收集这一块,首先第一个想到是友盟(umeng),因为umeng在我国应用很广泛,再加上它确实简单免费,开发文档超详细,所以高高兴兴就准备开始了。可是,可是…..哥们儿的公司做的是国外的产品,这下不好办了,因为umeng服务器在国内啊,这样传数据不仅会丢包,而且安全性也不高,最后索性直接问问umeng吧,就和umeng进行了交流,的确人家国外暂时没服务器,说是有一个内测版的skd可以先体验体验,地址见这里:umeng海外统计链接
可是哥们儿不能把公司的产品当做umeng的试验品啊,还是算了啊,最后想到既然是国外,索性就用国外的服务吧。经过两天的摸索,看了好几家,最后决定在Yahoo 的Flurry 和 GoogleAnalytics中选择一个,鉴于哥们儿这英文水平还有一些其它因素,最后决定用GoogleAnalytics。
好,废话不说了,直接开始
首先直接在Google中直接搜GoogleAnalytics,一般第一个就是的,进去主界面后,就可是找文档吧,可是找了好大半天也没找见,最后还是在一个小角落找到了(可能我太笨了吧)。见图:
在这里有个学习资源,点进去后找到GoogleDeveloper这一项
这个就是我们要的开发文档了。
是不是觉得很情切,中文版的。
在这里我们按照文档说明的往下写就行了,
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
(1)在项目的build.gradle中添加(不是app)
classpath 'com.google.gms:google-services:3.0.0'
(2)将此插件添加到应用级 build.gradle 的底部
apply plugin: 'com.google.gms.google-services'
(3)在app的build.gradle中添加
compile 'com.google.android.gms:play-services-analytics:9.2.0'
compile 'com.google.android.gms:play-services-analytics:7.3.0'
classpath 'com.google.gms:google-services:1.3.0'
至于在文档中提到的获取配置文件google-service.json以及将文件添加到项目中,经过本人的实验,其实并没有卵用。
/**
* This is a subclass of {@link Application} used to provide shared objects for this app, such as
* the {@link Tracker}.
*/
public class AnalyticsApplication extends Application {
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.global_tracker);
}
return mTracker;
}
}
这是文档中给出的代码,这里在获取Tracker对象时,使用了:
mTracker = analytics.newTracker(R.xml.global_tracker);
其中xml文件为我们需要写的一些属性:
<resources>
<string name="ga_trackingId">UA-66283842-1string>
<bool name="ga_autoActivityTracking">truebool>
<bool name="ga_reportUncaughtExceptions">truebool>
<string name="ga_logLevel">warningstring>
<integer name="ga_dispatchPeriod">20integer>
<string name="ga_sampleFrequency">100.0string>
<integer name="ga_sessionTimeout">30integer>
resources>
还有一种方法就是将这些属性写到代码中。
sAnalytics = GoogleAnalytics.getInstance(this);
// The dispatching period in seconds when Google Play services is unavailable. The default period is 1800 seconds or 30 minutes
// sAnalytics.setLocalDispatchPeriod(1800);
tracker = sAnalytics.newTracker("UA-93805582-2");
// tracker.enableAdvertisingIdCollection(false); // 广告收集
// tracker.enableExceptionReporting(true); // 当应用中有未被捕获的异常时自动对其进行捕获收集
tracker.enableAutoActivityTracking(true); // 每次用户启动Activity时自动跟踪屏幕浏览量
Log.i(TAG, "Setting screen name: " + name);
mTracker.setScreenName("Image~" + name);
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
我们可以像文档中这样,前面在application中设置了enableAutoActivityTracking(true),这个方法就是自动跟踪我们的activity,所以,如果在application中初始化了tracker对象,并设置了他的属性,那么我们在activity中是不需要添加的,唯一要添加的就是在fragment中和viewpager中添加。
在这里有些读者可能会在以下这两个方法中困惑
@Override
public void onStart() {
super.onStart();
mTracker. reportActivityStart (this);
}
@Override
public void onStop() {
super.onStop();
mTracker. reportActivityStop (this);
}
其实在API14之前使用这两方法的,但在14后,他们就被.enableAutoActivityTracking(true)给替代了。所以说他们的效果只一样的。
那么要追踪fragment和viewpager,只需按文档中说的那样做就行。
事件的跟踪就好比我们的点击事件了,还有做了哪些需要我们关心的动作,我们都可以记录下来。
以点击事件为例:
pageviewButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTracker.send(
new HitBuilders.EventBuilder()
.setCategory(category) // 事件类型 String 必须有
.setAction(action) // 动作 String 必须有
.setLabel(lable) // 标签 String 可有可无
.setValue(value) // 值 Long 可有可无
.build()
);
}
});
上面就是我们需要做的,一般这些就差不多了,还有什么广告功能,异常崩溃捕捉了,有兴趣的自己去看看。都挺简单的。还有一些基础功能,就是不用代码实现,就可以统计的一些
用户量统计(活跃用户,每天,每月等),位置,手机型号(包括分辨率,品牌,操作系统等),语言,国家,应用版本等。
最后在上几张统计的图吧