一、了解一下友盟快速集成的步骤
1.流程图如下:
从上图看,有些工作已经做好了,下载一个sdk-android:umeng-analytics-v5.2.3.jar,拷贝到libs文件夹中。
2.配置Manifest文件
通过上一篇,相信大家都可以获取到APPkey了。
首先,配置权限:
其次,配置参数常量
配置完这些信息后,你的项目其实已经和友盟开发者账户关联在一起了。
上面的渠道名称,也只是一个标识,写法见名知意即可,建议使用英文。
3.注意
每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。
二、开始进行session统计和页面统计
1.概念理解
session统计:也就是页面停留时间长度,从onResume()到onPause()之间的时间长度。每一次开始到结束都发送一次统计数据。
页面统计:也就是视图、屏幕统计,统计用户访问了哪个界面,默认情况下这个功能是自动随着统计session数据而统计的,因为时长也是相对某个页面而言的,要不也没有意义了。
2.session统计
只有集成正确,才能保证获取正确的新增用户、活跃用户、启动次数、使用时长等基本数据。
如果想要统计数据是基于某个Activity的,只需如下操作即可
@Override
protected void onResume() {
super.onResume();
Adjust.onResume(this);
MobclickAgent.onResume(this);
Log.e(TAG, "ONRESUME");
}
@Override
protected void onPause() {
super.onPause();
Adjust.onPause();
MobclickAgent.onPause(this);
Log.e(TAG, "ONPAUSE");
}
如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计,导致启动次数异常增高。(eg.使用TabHost、TabActivity、ActivityGroup时)。
如果Activtiy类比较多,为了方便起见,为所有的Activity类创建一个父类,在父类中调用即可。
友盟提示:当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过下面的接口来自定义这个间隔(参数单位为毫秒)。
MobclickAgent.setSessionContinueMillis(long interval)
如果开发者调用 Process.kill 或者 System.exit 之类的方法杀死进程,
请务必在此之前调用
MobclickAgent.onKillProcess(Context context) 方法,用来保存统计数据。
3.页面统计
页面统计信息集成正确,才能获取正确的额页面路径、访问深度(PV)等数据。
友盟提示:页面访问路径的数据为抽象统计(抽象比例为所有的log的3%),数据量达到一定程度才会在后台显示。
如果只是单纯的统计Activity页面,那么我们不需要做任何页面统计的工作,因为在做session统计的时候,默认已经进行了页面统计。
但是在包含fragment的程序中我们希望统计更详细的页面,所以需要自己调用方法做更详细的统计。首先,需要在程序入口处,调用 MobclickAgent.openActivityDurationTrack(false)
禁止默认的页面统计方式,这样将不会再自动统计Activity。
现在加入有这么一种情况,有一个Activity,这个Activity包含3个Fragment,现在想要统计Activity的session信息和各个Fragment的页面数据,如何做?
①在Activity的onCreate中调用:MobclickAgent.openActivityDurationTrack(false)
②在Activity中调用:
public void onResume() {
super.onResume();
MobclickAgent.onResume(this); //统计时长
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
③在每个Fragment中调用:
public void onResume() {
super.onResume();
MobclickAgent.onPageStart("MainScreen"); //统计页面
}
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd("MainScreen");
}
点击我的产品,选择全部应用,点击添加新应用按钮(这里点击该按钮,不是真的为了添加新应用,而是为了进入测试环境,查看测试数据),如下图
点击查看链接,查看日志信息列表以及日志时间
其中最上面的一条是刚刚测试的数据,可点击进去查看一下
可以看到页面路径日志信息,这些信息和自己定义的页面路径名称,以及时间长度都比较吻合。但是数据还是有点问题,因为数据不全,我操作的时间还操作了其它界面,但是却没有统计数据。经过反思了一下,找到了问题,因为页面统计默认是打开的,但是为了统计Fragment的时候关闭了,所以其它页面信息是统计不到的。
解决办法:
解释一下BaseActivity:自定义的所有页面的父类。
管理Fragment的页面,不继承BaseActivity,而是继承FragmentActivtiy或者Activity,在该Activity的onCreate中停用默认的页面统计功能,并调用session统计方法。在Fragment中调用页面统计方法。在BaseActivity中启用默认的页面统计方法,这个是导致问题的根本原因。修改后重新查看统计数据如下:
四、统计多渠道数据原理
只需修改配置信息里面的渠道信息即可。