Android接入友盟推送

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq77485042/article/details/81035789

应用中当我们想去服务端获取数据时一般都是用的Http请求去主动获取服务器返回来的数据进行展示。

但是,当服务器有新的数据需要主动告诉我们的手机应用时,该肿么办呢?这就需要用到推送的功能了。现在推送有好多家第三方的,我在这里就讲讲给我们的应用接入友盟第三方推送的步骤吧。

1.先去友盟推送以应用包名创建应用http://message.umeng.com

2.在友盟后台获取到通过包名创建的应用对应生成的AppKey和Umeng Message Secret。

3.在项目中添加依赖:

//PushSDK必须依赖基础组件库,所以需要加入对应依赖
compile 'com.umeng.sdk:common:1.5.3'
//PushSDK必须依赖utdid库,所以需要加入对应依赖
compile 'com.umeng.sdk:utdid:1.1.5.3'
//PushSDK
compile 'com.umeng.sdk:push:4.2.0'

注:如果无法正常集成添加配置:

allprojects {
    repositories {
          mavenCentral()
    }
}

4.在程序的入口也就是Application的onCreat()方法中初始化:

UMConfigure.init(context, AppKey, "随便取", UMConfigure.DEVICE_TYPE_PHONE, Umeng Message Secret);

5.在初始化后在onCreat()方法注册推送服务:

PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {

    @Override
    public void onSuccess(String deviceToken) {
        //注册成功会返回device token
        //这里保存好对应的deviceToken
    }

    @Override
    public void onFailure(String s, String s1) {

    }
});

注:不同的应用在相同的设备上deviceToken的值是不同的。

6.在所有Activity的基类中也就是BaseActivity的onCreat()方法中添加:

PushAgent.getInstance(context).onAppStart();

完成以上步骤就算是初步完成推送功能了。

可以在http://message.umeng.com的测试模式中把获取到的对应的device token添加为测试设备,然后添加推送消息,就会发现推送可以成功到你手机上了。

注:模拟器好像是不行的。

以上看起来好像是完成了但是你点击了通知栏好像并没有什么卵用。

我们点击了通知栏想跳转到对应的界面并且传递参数过来得话就得在Application的onCreat()方法中:

UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
        @Override
        public void dealWithCustomAction(Context context, UMessage msg) {
            Map<String, String> extra = msg.extra;
            if (extra.get("activityType").equals("1")) {
                Intent intent = new Intent(context, MessCenterActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            } else {
                Intent intent = new Intent(context, InformationActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }
        }
    };

这里回调获取到的UMessage msg参数就是我们服务器后台组合好的数据已键值对的防暑存放在这里。

看我上面的代码拿到msg的extra字段就是一个Map对象,里面的数据就是我们后台的小伙伴存放进去的数据,根据Key值获取到对应的value值,然后在做对应的界面跳转。

注意在Application中做跳转时需要给Intent添加Intent.FLAG_ACTIVITY_NEW_TASK这个标签。

然后就可以实现点击了对应的通知就可以跳转至对应的界面了。

以上就是友盟推送的简单用法,如有错误,请留言!!!

猜你喜欢

转载自blog.csdn.net/qq77485042/article/details/81035789