友盟推送的接入和遇到问题

汇总一下友盟推送的中遇到的问题。

一、友盟推送集成

1)申请友盟推送KEY

*申请友盟推送APPKEY。

1-2-1

如果应用已经存在了,只是新接入友盟推送。可以选择从已有应用添加。

添加时注意设置包名称。

添加成功以后,会显示应用相关信息:

1-5

APPKEY:客户端友盟+的应用APPKEY,这是KEY在友盟+是通用的,如果是新添加的应用,友盟统计会有应用相关数据;

Umeng Message Secret: 友盟推送秘钥,必须。在友盟推送初始化必须要使用到。

2)集成Push SDK

项目build.gradle设置依赖仓库

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
}

 

在项目app模块添加项目配置,如果版本号>=3.0.0,请使用如下配置脚本添加远程依赖:

//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'

注意:如果同时使用支付宝和友盟推送,会出现utdid冲突。去掉依赖库就行。

utdid这个是干什么用的呢?阿里提供的验证设备唯一性和有效性的工具。

3)友盟+初始化。

务必在工程的自定义Application类的 onCreate() 方法中做SDK代码初始化工作。

// 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
// 参数一:当前上下文context;
// 参数二:应用申请的Appkey(需替换);
// 参数三:渠道名称;
// 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
// 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息(需替换)
UMConfigure.init(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替换为秘钥信息,服务后台位置:应用管理 -> 应用信息 -> Umeng Message Secret");

4)添加设备注册

Push注册在UMConfigure.init方法之后注册,注册成功后可获取deviceToken,进行消息下发。调用代码如下所示:


UMConfigure.init(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替换为秘钥信息,服务后台位置:应用管理 -> 应用信息 -> Umeng Message Secret");
//获取消息推送代理示例
PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {

  @Override
  public void onSuccess(String deviceToken) {
    //注册成功会返回deviceToken deviceToken是推送消息的唯一标志
    Log.i(TAG,"注册成功:deviceToken:-------->  " + deviceToken);
  }

  @Override
  public void onFailure(String s, String s1) {
    Log.e(TAG,"注册失败:-------->  " + "s:" + s + ",s1:" + s1);
  }
});

设备注册成功,推送消息可以按照特定设备推送(device token)

5)应用数据统计接口

在所有的Activity 的onCreate 方法或在应用的BaseActivity的onCreate方法中添加:

PushAgent.getInstance(context).onAppStart();

6)验证APP接入友盟推送是否成功

启动APP,观看日志,确认设备是否注册成功。

2019-08-30 17:24:59.835 21498-21498/? I/UMLog_com.umeng.message.PushAgent: AndroidManifest配置正确、参数正确
2019-08-30 17:24:59.851 21498-21498/? D/NAccs.AccsClientConfig:  build config:AccsClientConfig{Tag=umeng:5a3b6264f29d984c72000049, ConfigEnv=0, AppKey=umeng:5a3b6264f29d984c72000049, AppSecret=1f8d88bb2641b5020fb83338bf15fc43, InappHost=umengacs.m.taobao.com, ChannelHost=umengjmacs.m.taobao.com, Security=2, AuthCode=null, InappPubKey=11, ChannelPubKey=11, Keepalive=true, AutoUnit=false, DisableChannel=false, QuickReconnect=false}
2019-08-30 17:24:59.851 21498-21498/? D/NAccs.ACCSClient:  init config:AccsClientConfig{Tag=umeng:5a3b6264f29d984c72000049, ConfigEnv=0, AppKey=umeng:5a3b6264f29d984c72000049, AppSecret=1f8d88bb2641b5020fb83338bf15fc43, InappHost=umengacs.m.taobao.com, ChannelHost=umengjmacs.m.taobao.com, Security=2, AuthCode=null, InappPubKey=11, ChannelPubKey=11, Keepalive=true, AutoUnit=false, DisableChannel=false, QuickReconnect=false}
2019-08-30 17:24:59.857 21498-21570/? I/UMLog_com.umeng.message.PushAgent: appkey:umeng:5a3b6264f29d984c72000049,secret:1f8d88bb2641b5020fb83338bf15fc43
2019-08-30 17:24:59.857 21498-21570/? I/NAccs.TaobaoRegister:  register appKey:umeng:5a3b6264f29d984c72000049 configTag:umeng:5a3b6264f29d984c72000049
2019-08-30 17:24:59.867 21498-21570/? D/NAccs.Config:  setAgooAppKey appkey:umeng:5a3b6264f29d984c72000049
2019-08-30 17:24:59.872 21498-21570/? D/NAccs.ACCSManager:  getAccsInstance com.umeng.message.PushAgent$2.run() (PushAgent.java:170)
2019-08-30 17:24:59.877 21498-21570/? I/olankeji.suand:     at void com.umeng.message.PushAgent$2.run() (PushAgent.java:170)
2019-08-30 17:24:59.908 21498-21570/? D/NAccs.InAppConn_umeng:5a3b6264f29d984c72000049:  new connection
2019-08-30 17:24:59.916 21498-21570/? I/NAccs.ACCSMgrImpl_umeng:5a3b6264f29d984c72000049:  bindApp appKey:umeng:5a3b6264f29d984c72000049
2019-08-30 17:24:59.947 21498-21570/? 
2019-08-30 17:25:00.083 21498-21570/? D/NAccs.MsgRecv_umeng:5a3b6264f29d984c72000049:  onResult command:1 erorcode:200
2019-08-30 17:25:00.086 21498-21565/? D/NAccs.MsgDistribute:  distribute start appkey:umeng:5a3b6264f29d984c72000049 config:umeng:5a3b6264f29d984c72000049
2019-08-30 17:25:00.086 21498-21565/? D/NAccs.MsgDistribute:  handleControlMsg configTag:umeng:5a3b6264f29d984c72000049 dataId: serviceId: command:1 errorCode:200 appReceiver:
2019-08-30 17:25:00.096 21498-21565/? I/UMLog_com.umeng.message.PushAgent: 注册成功:AtX20UK7LQNBzOQ_91oSgtIxjj7PbufMnNI2mI8Tptz_
2019-08-30 17:25:00.097 21498-21565/? I/wuchi: --->>> UMJobIntentService enqueueWork, cla is com.umeng.message.UmengMessageCallbackHandlerService
2019-08-30 17:25:00.552 21498-21606/com.xiaolankeji.suanda I/awcn.SessionCenter: |[seq:umeng:5a3b6264f29d984c72000049] [forground]
2019-08-30 17:25:00.552 21498-21606/com.xiaolankeji.suanda D/awcn.StrategyCenter:  getSchemeByHost host:umengacs.m.taobao.com scheme:https
2019-08-30 17:25:00.553 21498-21606/com.xiaolankeji.suanda D/awcn.SessionCenter: |[seq:umeng:5a3b6264f29d984c72000049] getInternal u:https://umengacs.m.taobao.com sessionType:LongLink timeout:0
2019-08-30 17:25:00.553 21498-21606/com.xiaolankeji.suanda D/awcn.StrategyCenter:  getSchemeByHost host:umengacs.m.taobao.com scheme:https
2019-08-30 17:25:00.555 21498-21606/com.xiaolankeji.suanda D/awcn.SessionRequest: |[seq:umeng:5a3b6264f29d984c72000049.AWCN1] SessionRequest start host:https://umengacs.m.taobao.com type:1
2019-08-30 17:25:00.556 21498-21606/com.xiaolankeji.suanda D/getConnStrategyListByHost: |[seq:host] umengacs.m.taobao.com:result [{203.119.215.108 443 http2_0rtt_acs}, {203.119.216.51 443 http2_0rtt_acs}, {203.119.215.108 80 http2_0rtt_acs}, {203.119.216.51 80 http2_0rtt_acs}, {203.119.215.108 443 spdy_0rtt_acs}, {203.119.216.51 443 spdy_0rtt_acs}, {203.119.215.108 80 spdy_0rtt_acs}, {203.119.216.51 80 spdy_0rtt_acs}, {203.119.215.108 443 https}, {203.119.216.51 443 https}]
com.xiaolankeji.suanda
2019-08-30 17:25:00.605 21498-21647/com.xiaolankeji.suanda I/wuchi: --->>> UmengMessageCallbackHandlerService register callback
2019-08-30 17:25:00.606 21498-21647/com.xiaolankeji.suanda I/UMLog_com.umeng.message.UmengMessageCallbackHandlerService: 注册:AtX20UK7LQNBzOQ_91oSgtIxjj7PbufMnNI2mI8Tptz_,状态:true
2019-08-30 17:25:00.615 21498-21647/com.xiaolankeji.suanda I/App.java: [ (App.java:152)#onSuccess ] umeng register device token: AtX20UK7LQNBzOQ_91oSgtIxjj7PbufMnNI2mI8Tptz_
2019-08-30 17:25:00.668 21498-21550/com.xiaolankeji.suanda D/com.umeng.message.proguard.m: appLaunchAt=1567127218888

确定设备注册成功信息:

2019-08-30 17:25:00.096 21498-21565/? I/UMLog_com.umeng.message.PushAgent: 注册成功:AtX20UK7LQNBzOQ_91oSgtIxjj7PbufMnNI2mI8Tptz_

二、测试友盟推送消息

2.1)添加测试设备:
在【友盟+】消息推送服务Push后台的“测试模式”中填写获取到的deviceToken,将该设备添加为测试设备:

1-15-1

1-15-2

设备的device token即日志输出中注册成功设备的device token。

2.2)创建测试消息

1-14

注意:按照上述步骤,推送消息是可能发送设备的。为什么呢?

设置友盟推送的BUG,怎么解决呢?

在第3步,设置发送策略的自定义参数,就能推送到设备端,显示通知消息了。

至此,友盟推送接入成功了。

三、定制推送消息处理

3.1) 友盟推送消息模板:

{
    "msg_id": "uu481201399440513912",
    "display_type": "notification",
    "alias": "",
    "random_min": 0,
    "body": {
        "title": "测试自定义参数",
        "ticker": "测试自定义参数",
        "text": "无",
        "after_open": "go_app",
        "url": "",
        "activity": "",
        "custom": "",
        "play_vibrate": "true",
        "play_sound": "true",
        "play_lights": "true"
    },
    "extra": {
        "key1": "value1",
        "key2": "value2"
    }
}

extra:即推送策略的自定义参数,key-value对。

body: 消息体。

         url:跳转URL

         title:消息标题。

         ticker: 通知栏消息的消息标题

         text: 通知栏显示消息内容

         activity: 跳转页面Activity名

         custom: 发送策略的自定义行为。

 

3.2) 自定义PUSH消息处理

消息到达时获取自定义参数。重写UmengMessageHandler类中的getNotification(Context context, UMessage msg)方法:

UmengMessageHandler messageHandler = new UmengMessageHandler() {
    @Override
    public Notification getNotification(Context context, UMessage msg) {
        for (Map.Entry entry : msg.extra.entrySet()) {
            Object key = entry.getKey();
            Object value = entry.getValue();
        }
        return super.getNotification(context, msg);
    }
};
mPushAgent.setMessageHandler(messageHandler);

在友盟初始化的时候添加注册。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值