文档 dev.xiaomi.com/doc/p=3995/index.html
(2) 登录——统计服务——你的APP——查看统计报表——左边菜单栏“集成测试”——测试设备
即可看到已有测试设备的统计信息
(3)新增测试设备方法:
Activity中,初始化后加入:
String deiviceId = .getDeviceID(this);
if(deiviceId!=null){
Log.d("test","deviceId = "+deviceId);
}
在Log中得到当前小米盒子的deviceId
在之前网站中点击列表上方“新增测试设备”,输入名称和deviceId
(4)项目中使用方式
1、初始化
//建议放在LauncherActivity中,如果放在Application中,如有后台sevice会导致统计数据不准确
MiStatInterface.initialize(this, XIAOMI_APP_ID, XIAOMI_APP_KEY, "xiaomi channel");
//上传方式,当前选择实时上传,第二个参数只在延时上传时才需设置
MiStatInterface.setUploadPolicy(MiStatInterface.UPLOAD_POLICY_REALTIME, 0);
//是否需要打印Log。Log的TAG为:MI_STAT
MiStatInterface.enableLog();
2、记录一次操作。Acitivity结束之后,仍会在线程中自动上传
MiStatInterface.recordPageStart(LoginActivity.this, "familycircle launcher"); //在onResume中调用
MiStatInterface.recordPageEnd(); //在onPause中调用
(2) 登录——统计服务——你的APP——查看统计报表——左边菜单栏“集成测试”——测试设备
即可看到已有测试设备的统计信息
(3)新增测试设备方法:
Activity中,初始化后加入:
String deiviceId = .getDeviceID(this);
if(deiviceId!=null){
Log.d("test","deviceId = "+deviceId);
}
在Log中得到当前小米盒子的deviceId
在之前网站中点击列表上方“新增测试设备”,输入名称和deviceId
(4)项目中使用方式
1、初始化
//建议放在LauncherActivity中,如果放在Application中,如有后台sevice会导致统计数据不准确
MiStatInterface.initialize(this, XIAOMI_APP_ID, XIAOMI_APP_KEY, "xiaomi channel");
//上传方式,当前选择实时上传,第二个参数只在延时上传时才需设置
MiStatInterface.setUploadPolicy(MiStatInterface.UPLOAD_POLICY_REALTIME, 0);
//是否需要打印Log。Log的TAG为:MI_STAT
MiStatInterface.enableLog();
2、记录一次操作。Acitivity结束之后,仍会在线程中自动上传
MiStatInterface.recordPageStart(LoginActivity.this, "familycircle launcher"); //在onResume中调用
MiStatInterface.recordPageEnd(); //在onPause中调用
如需记录用户整个Session和操作路径,需在每个Activity中加入此代码。
曾经尝试放在BaseActivity中,取class的name,取到的是当前的Activity的名称,但是初始化如果放在BaseActivity中,会调用多次。
放在其他Activity中,在BaseAcitiity中会报空指针
String name = this.getClass().getName();
if(name!=null){
name = name.substring(name.lastIndexOf(".")+1,name.length()-8); //名字去掉Acitivity
Log.d("test", name);
}
if(name!=null){
name = name.substring(name.lastIndexOf(".")+1,name.length()-8); //名字去掉Acitivity
Log.d("test", name);
}
(5)Notes:
第一次安装时,会自动采集设备信息上传。例如:
"key":"IMEI","type":"字符串属性","value":"XXXXXXXXX"
"key":"resolution","type":"字符串属性","value":"1080x1920"
"key":"locale","type":"字符串属性","value":"zh_CN"
"key":"new","type":"计数","value":"1"
"key":"model","type":"字符串属性","value":"MiBOX2"
"key":"OS","type":"字符串属性","value":"android19"
之后再进入应用,会从LocalDB中取record数据。有时会将多次操作打包,只上传一次。虽然选择实时上传方式。事实上也不完全实时
recordPageStart,recordPageEnd 如果在init之前调用的话,会报空指针异常。为防止只能try catch。
上报策略
"key":"IMEI","type":"字符串属性","value":"XXXXXXXXX"
"key":"resolution","type":"字符串属性","value":"1080x1920"
"key":"locale","type":"字符串属性","value":"zh_CN"
"key":"new","type":"计数","value":"1"
"key":"model","type":"字符串属性","value":"MiBOX2"
"key":"OS","type":"字符串属性","value":"android19"
之后再进入应用,会从LocalDB中取record数据。有时会将多次操作打包,只上传一次。虽然选择实时上传方式。事实上也不完全实时
recordPageStart,recordPageEnd 如果在init之前调用的话,会报空指针异常。为防止只能try catch。
上报策略
- UPLOAD_POLICY_REALTIME 实时上报。每当有一条新的记录,就会激发一次上报。
- UPLOAD_POLICY_WIFI_ONLY 只在WIFI下上报。当设备处于WIFI连接时实时上报,否则不上报记录。
- UPLOAD_POLICY_BATCH 批量上报。当记录在本地累积超过一个固定值时(50条),会触发一次上报。
- UPLOAD_POLICY_WHILE_INITIALIZE
启动时候上报。每次应用启动(调用initialize方法)时候,会将上一次应用使用产生的数据记录打包上报。 - UPLOAD_POLICY_INTERVAL
指定时间间隔上报。开发者可以指定从5分钟-1天之间的任意时间间隔上报数据记录。需要注意,由于SDK并没有使用安卓的实时唤醒机制,因此采用此策略上报,SDK做不到严格的遵守开发者设定的间隔,而会根据应用数据采集的频率和设备休眠策略,会有一定的偏差。 - UPLOAD_POLICY_DEVELOPMENT
调试模式。使用此策略,只有开发者手动调用一个接口才会触发上报,否则在任何情况下都不上报。SDK中提供了一个triggerUploadManually方法用于手动触发。这种策略主要用于开发者调试时候可手动控制上报时机,便于做数据对比。
小米统计服务的本地缓存最长会保存3天,只要在3天内上报流程被触发,就会将本地之前没上报成功的所有数据打包上报。如果数据上报成功,则会把已经成功的数据从本地删除。