android应用数据统计

android应用数据统计使用方法和配置方式:
manifest的配置主要包括添加权限,填写Appkey和填写渠道id三部分,代码示例如下:

<manifest……>
<uses-sdk android:minSdkVersion="4"></uses-sdk>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<application ……>
……
<activity ……/>
<meta-data android:value="APP_KEY" android:name="APPKEY"></meta-data>
<meta-data android:value="Channel ID" android:name="CHANNEL"/>
</application>    
</manifest>

APPKEY也可在Activity中配置:只需在程序启动时的Activity中调用此接口:

StatisticsConfig.setAppkey(String appkey)

需要在服务端日志记录入口手动添加相应的appkey

CHANNEL也可在Activity中配置:只需在程序启动时的Activity中调用此接口:

StatisticsConfig.setChannel(String channel)

提醒:每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。

正确集成如下代码,才能够保证获取正确的新增用户、活跃用户、启动次数、使用时长等基本数据。

在每个Activity中如下调用相应内容:

public void onResume() {
super.onResume();
Statistics.onResume(this);
}

public void onPause() {
super.onPause();
Statistics.onPause(this);
}

确保在所有的Activity中都调用 Statistics.onResume() 和Statistics.onPause()方法,这两个调用将不会阻塞应用程序的主线程,也不会影响应用程序的性能。

注意如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计,导致启动次数异常增高。

当应用在后台运行超过60秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口来自定义这个间隔(参数单位为毫秒)。

StatisticsConfig.setSessionContinueMillis(long interval)

如果调用 Process.kill 或者 System.exit 之类的方法杀死进程,请务必在此之前调用

Statistics.onKillProcess(Context context)

方法,用来保存统计数据。

如果页面不单由Activity组成,需在其包含的 Fragment 中统计页面:

public void onResume() {
super.onResume();
Statistics.onPageStart(“pageName”);
}

public void onPause() {
super.onPause();
Statistics.onPageEnd(“pageName”);
}

需要注意的是这些方法的调用,需要保证线性不交叉,每个 start 都有一个 end 配对,如下:

onPageStart ->onPageEnd-> onPageStart -> onPageEnd -> onPageStart ->onPageEnd

这样才能保证每个页面统计的正确

目前的发送策略采用启动时发送:APP启动时发送当次启动数据和上次的使用时长等缓存数据,当次使用过程中产生的自定义事件数据缓存在客户端,下次启动时发送

自定义事件提交,可根据事件的使用场景定义不同的type,name,key,value值

Statistics.setEvent(String type,String name,String key,String value)

是否启动数据上传,可在应用内部进行设置,可在应用内根据用户当前网络状态进行判断,wifi下发送等策略,默认不发送

Statistics.setUpdateOnline(boolean b)

统计发送因为用户关闭网络访问导致发送失败,可关闭统计功能,连续统计发送失败次数累计超过默认值自动关闭统计,可在应用内部进行设置,默认:10次

Statistics.setErrorNum(int i)

如统计发生错误,可在应用内部设定debug模式,对相关信息进行检查,默认false logKey:FDX->Statistics

Statistics.setDebug(boolean b)

数据格式:

post: 访问数据包
u: uuid => 设备唯一标识
m: param => [ip,网络类型] 存入每次访问数据的more字段中
t: time => 发送时间
k: token => 访问令牌(访问key+发送时间md5)
v: value => [一次访问,一次访问]

一次访问:session,新session产生时保存
=[访问次数,访问时间,访问过程,事件列表]

事件列表
=[事件,事件,事件]
=[[事件时间,事件分类,事件名,key,value],[事件时间,事件分类,事件名,key,value]]

访问过程:先进先出
=[一次start到end,一次start到end]
=[[访问名称,开始时间,结束时间,页面列表],[访问名称,开始时间,结束时间,页面列表]]

页面列表:字典 {pagename:starttime,pagename:starttime}
=[一次page,一次page]
=[[页面名称,开始时间,结束时间],[页面名称,开始时间,结束时间]]

post:新增数据包
t: time => 发送时间
k: token => 访问令牌(访问key+发送时间md5)
v: value => [deviceId, mac, osName, osVersion, brandModel, appVersion]

Categories: Android, 移动开发