基本上现在任何一个实用的App都离不开瞒点统计,否则应用发出去就一抹乌黑了,也难以做运营和一些决策,为进一步了解这一块, 于是选择了业界用得比较多的友盟平台
统计的方式很多,不过是最基本的新增用户和启动次数。关于这个,可能就需要涉及Android的Activity的生命周期和状态改变,为了让你们更好点的理解,做个简单的代码尝试:
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG,"enter onCreate”);
}
protectedvoid onStart() {
super.onStart();
Log.e(TAG,"onStart");
}
@Override
protectedvoid onResume() {
super.onResume();
Log.e(TAG,"onResume");
}
@Override
protectedvoid onPause() {
super.onPause();
Log.e(TAG,"onPause");
}
@Override
protectedvoid onStop() {
super.onPause();
Log.e(TAG,"onStop");
}
然后做了一些实验:
1.第一次启动main activity有三个状态值发生,onCreate,onStart,onResume
2.按Home键将应用切到后台,触发onPasue和onStop
3.长按home键,找到应用打开后,切换到前台,触发onStart,onResume
后面你们如果真正使用友盟SDK后会发现它也是基于这个统计来计算活跃用户的,接下来正式开始讲解
友盟统计
友盟官方集成文档:
1.必要的集成步骤
<manifest……>
!-- 必须的权限 -->
//取用户设备的mac地址,在平板设备上,无法通过imei标示设备,我们会将mac地址作为用户的唯一标识
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
//检测联网方式,区分用户设备使用的是2G、3G或是WiFi
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//检测联网方式,区分用户设备使用的是2G、3G或是WiFi
//允许应用程序联网,以便向我们的服务器端发送数据。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application ……>
……
<activity ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
application>
manifest>
YOUR_APP_KEY: 换为您在友盟后台申请的应用Appkey(Appkey可在统计后台的 统计分析->设置->应用信息 页面查看)
Channel ID: 用户自定义写(什么都可以)
session的调用
在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context) ,onPause方法中调用 MobclickAgent.onPause(Context)
public void onResume() {
super.onResume();
MobclickAgent.onResume(this); //统计时长
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this); //统计时长
}
1.确保在所有的Activity中都调用 MobclickAgent.onResume()和MobclickAgent.onPause()方法
2.注意 如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计,导致启动次数异常增高。(eg.使用TabHost、TabActivity、ActivityGroup时)。
3.当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:MobclickAgent.setSessionContinueMillis(long interval) 来自定义这个间隔(参数单位为毫秒)。
4.如果开发者调用Process.kill或者System.exit之类的方法杀死进程,请务必在此之前调用MobclickAgent.onKillProcess(Context context)方法,用来保存统计数据。
非常重要:必须调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法,才能够保证获取正确的新增用户、活跃用户、启动次数、使用时长等基本数据。
2.集成SDK
添加依赖
compile 'com.umeng.sdk:common:1.4.4'
compile 'com.umeng.sdk:analytics:7.4.4'
如果无法正常集成请添加如下代码 :
allprojects {
repositories {
mavenCentral()
}
}
混淆
请详细查看官方文档
3.初始化和通用接口
/*
* 如果在注册清单里 声明APP KEY,就可以使用这个初始化方法
*
* 初始化common库
* 参数1:上下文,不能为空
* 参数2:APP_KEY 如果设置为null
* 参数3:Channel 如果设置为null
* 参数4:设备类型,UMConfigure.DEVICE_TYPE_PHONE为手机、UMConfigure.DEVICE_TYPE_BOX为盒子,默认为手机
* 参数5:Push推送业务的secret 需要集成Push功能必须传入的sercet,否则为空
*/
UMConfigure.init(getApplicationContext(), null, null, UMConfigure.DEVICE_TYPE_PHONE, null);
/**
* 设置组件化的Log开关
* 参数: boolean 默认为false,如需查看LOG设置为true
*/
UMConfigure.setLogEnabled(true);
/**
* 设置日志加密
* 参数:boolean 默认为false(不加密)
*/
UMConfigure.setEncryptEnabled(true);
/**
* 设置场景类型接口
* 参数:上下文
* 参数: 模式
*/
MobclickAgent.setScenarioType(getApplicationContext()
, MobclickAgent.EScenarioType.E_UM_NORMAL)
至此,基本功能集成已经结束,在你们使用的时候一定要详细查看文档,有很多配置没有详细指出
以上设置完成之后就可以安装app查看简单的页面统计了
介绍:自定义事件分为计数时间和计算事件
详细介绍他们的区别
添加事件:【统计分析】->【设置】->【事件】->【添加事件】
MainActivity添加代码
/**
* 计数事件
* @param context 当前宿主进程的ApplicationContext上下文。
* @param eventID 为当前统计的事件ID。
* @param label 事件的标签属性。
*/
public static void onEvent(Context context, String eventID, String label) {
MobclickAgent.onEvent(context, eventID, label);
}
//点击事件处理
onEvent(MainActivity.this, "test", "测试");
查看效果图
国内比较强大而且好用的统计
如果还有疑问的话点击连接github地址