写点什么

MobPush 安卓推送消息数据解析推荐实现

  • 2022 年 9 月 02 日
    上海
  • 本文字数:2381 字

    阅读完需:约 8 分钟

MobPush 推送消息解析需要主要类型分为 TCP 消息与厂商消息,TCP 消息:MobPush 应用在线默认走 MobTech 自己创建的 TCP 通道,称为 TCP 消息。厂商消息:应用结束进程状态推送需走厂商通道(华米 OV 魅通道)。因此推送消息解析主要针对这俩种消息进行处理。推荐以下两种解析方式。更多操作详情可参考官网文档


统一通过 intent 解析(推荐)推送消息可以统一通过解析 intent 处理,需要注意,由于安卓系统问题,需要消息落地页 Activity 的启动模式为 SingleTask 或者 SingleTop,否则有可能落地页的 onCreate 和 OnNewIntent 无法触发,解析厂商消息失败,可用透明 Activity 作为落地页,再根据参数进行跳转等其他逻辑。解析示例:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // 可通过Mob提供的解析方法,根据解析参数,判断消息是厂商消息还是tcp消息,需要分别处理,打印参数示例参考3,4。 JSONArray jsonA = MobPushUtils.parseMainPluginPushIntent(getIntent()); System.out.println("-------------jsonSchemejsonA 打印查看:"+jsonA ) JSONArray var = MobPushUtils.parseSchemePluginPushIntent(getIntent()); System.out.println("-------------jsonSchemevar打印查看:"+var)}
复制代码


 protected void onNewIntent(Intent intent) { // 可通过MobTech提供的解析方法,根据解析参数,判断消息是厂商消息还是tcp消息,需要分别处理,打印示例参考3,4。  super.onNewIntent(intent);  setIntent(intent);  JSONArray jsonA = MobPushUtils.parseMainPluginPushIntent(getIntent());  System.out.println("-------------jsonSchemejsonA 打印查看:"+jsonA )  JSONArray var =  MobPushUtils.parseSchemePluginPushIntent(getIntent());  System.out.println("-------------jsonSchemevar打印查看:"+var)  }
复制代码


区分处理: TCP 消息通过 MobTech 回调处理,厂商消息解析 Intent 处理 MobPush TCP 消息均可通过回调处理如下:


MobPushReceiver mobPushReceiver = new MobPushReceiver() {
@Override public void onCustomMessageReceive(Context context, MobPushCustomMessage message) { //接收到自定义消息(透传消息) message.getMessageId();//获取任务ID message.getContent();//获取推送内容 }
@Override public void onNotifyMessageReceive(Context context, MobPushNotifyMessage message) { //接收到通知消息 message.getMobNotifyId();//获取消息ID message.getMessageId();//获取任务ID message.getTitle();//获取推送标题 message.getContent();//获取推送内容 }
@Override public void onNotifyMessageOpenedReceive(Context context, MobPushNotifyMessage message) { //通知被点击事件 message.getMobNotifyId();//获取消息ID message.getMessageId();//获取任务ID message.getTitle();//获取推送标题 message.getContent();//获取推送内容 }
@Override public void onTagsCallback(Context context, String[] tags, int operation, int errorCode) { //标签操作回调 //tags: RegistrationId已添加的标签 //operation: 0获取标签 1设置标签 2删除标签 //errorCode: 0操作成功 非0操作失败 }
@Override public void onAliasCallback(Context context, String alias, int operation, int errorCode) { //别名操作回调 //alias: RegistrationId对应的别名 //operation: 0获取别名 1设置别名 2删除别名 //errorCode: 0操作成功 非0操作失败 }
};
复制代码


厂商消息必须解析 intent 通过 onCreate 或 onNewIntent

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // 可通过Mob提供的解析方法,根据解析参数,判断消息是厂商消息还是tcp消息,需要分别处理,打印示例参考3, JSONArray jsonA = MobPushUtils.parseMainPluginPushIntent(getIntent()); System.out.println("-------------jsonSchemejsonA 打印查看:"+jsonA ) JSONArray var = MobPushUtils.parseSchemePluginPushIntent(getIntent()); System.out.println("-------------jsonSchemevar打印查看:"+var)}
复制代码


TCP 消息解析参数示例

[  {   "from_tcp":true  },  {   "msg":"MobPushNotifyMessage{style=0, title='111', content='111', styleContent='null', inboxStyleContent=null, extrasMap={pushData={\"iskey\":\"https://www.mob.com\"}, iskey=https://www.mob.com, channel=mobpush, id=4bp4tw9talcex9jf28}, messageId='4bp4tw9talcex9jf28', timestamp=1647939368936, voice=true, shake=true, light=false, channel=0, notifySound='null', dropType=0, dropId='null', mobNotifyId='1257662669', offlineFlag=0, isGuardMsg=false, icon='null', image='null', androidBadgeType=0, androidBadge=0, androidChannelId='MobPush', importance='3', notificationChannelName='消息通知', isLockscreenVisible='false', allowBubbles='false'}"  },  {   "channel":"mobpush"  }]
复制代码

厂商解析参数示例,可直接解析附加参数

[  {   "from_tcp":“false”  },  {   "id":"4bp4tw9taldddxxreo"  },  {   "channel":"huawei"   },  {   "iskey":"https://www.mob.com"  }]
复制代码


用户头像

还未添加个人签名 2019.05.08 加入

还未添加个人简介

评论

发布
暂无评论
MobPush 安卓推送消息数据解析推荐实现_android_MobTech袤博科技_InfoQ写作社区