友盟推送U-Push 6.0.1的集成和冲突问题解决

一、首先,在友盟后台申请应用对应的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<String, String> 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的依赖注释即可

发布了27 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/shving/article/details/97107558