一、首先,在友盟后台申请应用对应的Appkey和Umeng Message Secret
这两个在初始化友盟SDK的时候要用到,申请成功以后信息如下:
二、在项目中集成友盟的SDK,在项目的gradle文件中写入友盟sdk的maven地址
maven { url 'https://dl.bintray.com/umsdk/release' }
在app模块下的gradle中添加友盟sdk的依赖:
//PushSDK必须依赖基础组件库,所以需要加入对应依赖
implementation 'com.umeng.umsdk:common:1.5.4'
//PushSDK必须依赖utdid库,所以需要加入对应依赖
implementation 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
implementation 'com.umeng.umsdk:push:6.0.1'
三、在项目的Application的onCreate中对友盟推送的相关配置进行初始化:
@Override
public void onCreate() {
super.onCreate();
// 友盟配置
UMConfigure.init(this, "申请的AppKey", “umeng”, UMConfigure.DEVICE_TYPE_PHONE, "申请的Umeng Message Secret");
//初始化友盟推送
initPush();
}
private void initPush() {
PushAgent mPushAgent = PushAgent.getInstance(this);
mPushAgent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String s) {
Log.i("js","注册成功:--------> " + s);
deviceToken = s;
}
@Override
public void onFailure(String s, String s1) {
Log.i("js","注册失败:--------> " + "s:" + s + ",s1:" + s1);
}
});
//自定义通知点击跳转
mPushAgent.setNotificationClickHandler(notificationClickHandler);
}
UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler(){
@Override
public void launchApp(Context context, UMessage uMessage) {
Intent intent = new Intent();
//后台自定义的参数都在这里
Map map = uMessage.extra;
String uri = map.get("uri");
if (!TextUtils.isEmpty(uri)) {
//跳转到对应的Activity
} else {
intent.setClass(mApplication, MainActivity.class);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
};
四、应用数据统计接口
在所有的Activity 的onCreate 方法或在应用的BaseActivity的onCreate方法中添加:
PushAgent.getInstance(context).onAppStart();
注:该方法是【友盟+】Push后台进行日活统计及多维度推送的必调用方法,请务必调用!
OK,友盟推送集成完毕,可以进入友盟的后台进行消息推送测试了。
如果项目中已经集成了阿里系的SDK,比如支付宝支付等,编译时可能会遇到如下错误:
Duplicate class com.ta.utdid2.b.a.a found in modules alipaySdk-20180601.jar (alipaySdk-20180601.jar) and utdid-1.1.5.3.jar (com.umeng.umsdk:utdid:1.1.5.3)
Duplicate class com.ta.utdid2.b.a.b found in modules alipaySdk-20180601.jar (alipaySdk-20180601.jar) and utdid-1.1.5.3.jar (com.umeng.umsdk:utdid:1.1.5.3)
Duplicate class com.ta.utdid2.b.a.b$a found in modules alipaySdk-20180601.jar (alipaySdk-20180601.jar) and utdid-1.1.5.3.jar (com.umeng.umsdk:utdid:1.1.5.3)
Duplicate class com.ta.utdid2.b.a.b$b found in modules alipaySdk-20180601.jar (alipaySdk-20180601.jar) and utdid-1.1.5.3.jar (com.umeng.umsdk:utdid:1.1.5.3)
Duplicate class com.ta.utdid2.b.a.c found in modules alipaySdk-20180601.jar (alipaySdk-20180601.jar) and utdid-1.1.5.3.jar (com.umeng.umsdk:utdid:1.1.5.3)
原因是支付宝支付的SDK中已经存在umsdk:common和umsdk:utdid相关的类:
在gradle中将common和utdid的依赖注释即可