集成步骤(文末有源代码)
- 登陆友盟,并注册
- 访问友盟统计:,选择“产品|解决方案”下的“移动统计”
-
在友盟上添加新应用:
添加完成后,即可看到新App的appKey:
-
启用统计功能
- 在安卓工程中引入SDK并集成:
1)工程根目录下的build.gradle文件中增加仓库配置
allprojects {
repositories {
maven { url 'https://dl.bintray.com/umsdk/release' }
}
}
2)app工程的build.gradle文件添加依赖
implementation 'com.umeng.umsdk:analytics:8.0.0'
implementation 'com.umeng.umsdk:common:2.0.1'
3)在AndroidManifest.xml清单文件中添加相关权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
4)Manifest文件中添加appkey和channel(对于appkey和channel,可以在代码里设置,也可以在Manifest文件中设置,详见官方文档)
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
5)在Application的onCreate中初始化友盟
UMConfigure.init(Context context, int deviceType, String pushSecret);
UMConfigure.setLogEnabled(BuildConfig.DEBUG);
UMConfigure.setEncryptEnabled(true);
6)如果要防止appKey泄漏导致统计数据混乱,可参考官方文档中的“设置secretkey”章节
7)页面中添加统计代码(注意一定要在onResume和onPause中调用MobclickAgent的onResume和onPause方法),更多介绍见官方文档
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.textview).setOnClickListener(v -> {
// MobclickAgent.onPageStart("xxx");
Map<String, Object> music = new HashMap<String, Object>();
music.put("music_type", "popular");//自定义参数:音乐类型,值:流行
music.put("singer", "JJ"); //歌手:(林俊杰)JJ
music.put("song_name", "A_Thousand_Years_Later"); //歌名:一千年以后
MobclickAgent.onEventObject(MainActivity.this, "testEventId", music);
// MobclickAgent.onPageEnd("xxx");
Toast.makeText(this, "已上报", Toast.LENGTH_SHORT).show();
});
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
8)添加混淆
-keep class com.umeng.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
- 添加自定义事件类型(代码上报时使用的eventId一定要现在这里进行定义)
https://mobile.umeng.com/platform/5c68c459f1f5565e3f00137e/setting/event/list
- 添加测试设备并查看实时上报情况
https://www.jianshu.com/p/968d40cdea3c -
上报结果样例:
附录
- Demo源代码:https://gitee.com/cxyzy1/umengStatisticsDemo
- 友盟官方集成统计文档:
https://developer.umeng.com/docs/66632/detail/101848
安卓开发技术分享: https://www.jianshu.com/p/442339952f26