简介: MPS 集成多个三方渠道,保障 push 使命必达的必须知道的几件事。

为了提升「MPS 消息推送」的推送的到达率,mPaaS 集成了华为、小米等厂商的推送功能,从而有效地提高用户留存率,提升用户体验。在日常运维过程中,发现少部分设备在厂商 push下无法 push,在此分享下相关案例的排查过程,方便后续同类问题借鉴。

一、push 相关背景

1.push 整体架构

以接触最多的国内 Android 设备为例,整体结构如下:

2.厂商 push 和自建 push

厂商 push 通道:优点是通过各个 OS 厂商维护的长链接进行推送,在 App 被系统杀掉后也可以进行推送,推送到达率高于自建push。支持华为,小米,oppo,vivo等厂商。缺点是,目前厂商的push基本都只支持通知栏消息的推送,在用户点击通知前,不启动应用,对红点, 图片等消息格式支持有限。

自建push通道:通过App启动后和自建服务端的长连接通道实现推送,缺点也很明显,App被杀掉后,就无法收到信息。主要用于不支持厂商渠道场景下的push。

二、问题排查举例

通过上面的介绍,可以看出三方厂商 push 是否成功,主要取决于三个链路,分别为:

  1. 三方 token 正确生成上报
  2. 服务端正常转发到厂商服务器
  3. 下发到客户端消息可以正常显示

1.测试准备

为了快速验证问题,我们需要准备一个推送程序,可以快速推送信息到App上。MPS提供了推送的Http接口供外部调用,我们可以通过初始化一个简单的java程序实现推送信息的发送,方便联调。使用链接

2.三方 token 生成阶段

目前 mPaaS 对三方厂商 push 的 token 生成分为以下步骤。

2.1 设备在三方push的厂商列表里

以华为设备为例,判断是否是华为设备的标准是,检测当前手机是否是 emui,如果是才走华为 PUSH SDK。在我们日常运维的 case 中,发现过部分设备由于刷机或者其他操作,在华为手机上安装的不是 emui,类似这种设备是走不了华为 push 的,只能走自建 push。

以vivo设备为例,低版本手机只有在vivo公布的白名单设备内才支持推送。

2.2 生成三方 token

在调用 push sdk 生成 token 的过程中,由于 push sdk 的生成也依赖当前手机的 room 版本,以华为为例,就强依赖华为手机内置的 HMS Core 版本。针对这种场景下的问题,在获取三方 token 失败的时候,会在回调里返回对应错误码。如下图所示,搜索 push 的关键字 mPush14,然后过滤,可以获取 token 返回错误码2。

我们查看华为定义的错误码,发现2表示 SERVICE_VERSION_UPDATE_REQUIRED,需要升级当前的 HMS 版本。

升级HMS版本的方案有两个

方案1:主动升级,调用更新服务接口,升级更新效果如下所示:

在启动阶段调用如下服务,安装更新华为推送服务
if (HuaweiApiAvailability.getInstance().isHuaweiMobileNoticeAvailable(context) == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED) {// 需要升级HuaweiApiAvailability.getInstance().resolveError(activity, ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED, 1);
}

方案2: 引导用户去华为设置里去升级

2.3 三方 token 正常上报

生成 token 后会通过 RPC 接口上报到 MPS 服务端,需要检查 RPC 接口是否有异常,上报接口是:alipay.client.yunpushcore.device.report

2.4 token 过期

以 oppo 为例,是在应用第一次启动时注册生效,后在刷机、还原手机(设置-其他设置-还原手机)、卸载应用时会失效,需要重新注册才能推送。

3.服务端投送阶段

3.1 消息包含了红点,静默,群发

目前如果消息设置了红点或者静默,因为厂商 push 不支持,MPS 会自动走自建 push。

3.2 三方服务端报错

这种主要用作 mPaaS 服务端推送到三方服务端后,三方返回异常。这种需要去 MPS 拉取服务端报错日志,然后核对厂商文档解决,比如华为服务端报错文档。

3.3 三方服务端限流

以 vivo 为例,默认推送走的是运营消息,每天只能对同一个用户推送 5 次。只有改成系统 push 类型才能没有这个限制。

4. 设备显示阶段

4.1 设备必须打开通知权限才能显示

比如 oppo 的通知权限默认是关闭的,需要打开通知权限,或者引导用户打开后才能显示。

4.2 应用包名和注册 oppo 配置保持一致

应用的包名要和注册 oppo 平台填写的包名要一致,不然不会显示。

三、其他常见问题

1.常用日志举例

1.1 tag:mPush14

主要是 mPaaS 上层应用层日志打印,打印 push 注册 token 相以及自建通道 push 相关信息。

1.2 tag: mcssdk

mcssdk 是 oppo push sdk 的日志 tag,可以查看厂商的一些日志信息,比如查看三方 token

2.其他思路

如果以上都解决不了,最后建议去看各个厂商的官方介绍,可能会找到一些思路。

  • oppo FAQ
  • vivo FAQ

原文链接
本文为阿里云原创内容,未经允许不得转载。

厂商 push 不通排查指南相关推荐

  1. mPaas 厂商 push 不通排查指南

    简介:mPaas 厂商 push 不通排查指南 1. 背景 金融级移动开发平台 mPaaS[1](Mobile PaaS)为 App 开发.测试.运营及运维提供云到端的一站式解决方案,能有效降低技术门 ...

  2. 华为服务器报错信息,厂商 push 不通排查指南

    1.测试准备 为了快速验证问题,我们需要准备一个推送程序,可以快速推送信息到App上.MPS提供了推送的Http接口供外部调用,我们可以通过初始化一个简单的java程序实现推送信息的发送,方便联调. ...

  3. 排查指南 | mPaaS 小程序提示“网络不给力”时该如何排查?

    当 Android 应用打开 mPaaS 小程序出现"网络不给力,请稍后再试"时,应该如何排查问题? 在我们集成 mPaaS 插件并使用小程序的过程中,很多开发者会遇到了打不开小程 ...

  4. 高通5G平台(SDX55\SDX62\SDX65):ping包异常问题排查指南

    高通5G平台:ping包异常问题排查指南 1. 背景 2. Ping包数据流走向及网络架构 2.1 终端与网络架构图 2.2 终端与基站之间协议栈数据流走向图 3. Ping包问题常见分析思路 3.1 ...

  5. 开放下载!《Rocket MQ 使用排查指南》精解100+常见问题

    简介:6个要点掌握Rocket MQ原理,5步教程快速入门Rocket MQ ,云运维工程师不可错过的匠心之作 发送消息耗时太久?客户端发送常见异常报错?启动发送端连接异常?Java 进程消息堆积严重 ...

  6. 云资源中的低成本战斗机——竞价实例,AWS、阿里云等六家云厂商完全用户使用指南

    https://zhuanlan.zhihu.com/p/128692430 云资源中的低成本战斗机--竞价实例,AWS.阿里云等六家云厂商完全用户使用指南 原创 灵魂工作室 速石科技 2019-10 ...

  7. # 驱动安全编码排查指南

    驱动安全编码&排查指南 ​ 作者: 魏来 什么是驱动 驱动程序是IoT设备能驱使外设的一种代码程序.不常接触底层开发的读者可能会有一个误区,认为驱动程序是运行在外设器件里的.但是,其实驱动程序 ...

  8. 有线电视显示无服务器,有线电视常见故障排查指南!只需这几招,就能轻松搞定...

    原标题:有线电视常见故障排查指南!只需这几招,就能轻松搞定 有线数字电视机顶盒可能会出现的一些故障该怎么办? 节目内容无法正常收视 ♦1.如果您的有线数字电视服务时限尚未到期,但因为长时间不使用机顶盒 ...

  9. RTT串口V1版本的使用分析及问题排查指南(一)

    本文由RT-Thread论坛用户123原创发布:https://club.rt-thread.org/ask/article/2894.html RTT串口V1版本的使用分析及问题排查指南(一) 简述 ...

最新文章

  1. python下三角代码分析_空间分析:2-3。用Python生成Delaunay三角形,23Python,德劳内
  2. 60款与DevOps相关的开源工具
  3. AC automation 模板
  4. 使用@Rule在JUnit中测试文件和目录
  5. ar android app,RakugakiAR安卓版
  6. 人脸识别签到_矿区签到出“新招” 人脸识别考勤上线
  7. github ssh 配置_Git多用户配置
  8. js按钮频繁提交解决方案:
  9. ftp ---- 虚拟用户登录(实例配置)
  10. 引领性指标与滞后性指标_测量可用性组同步滞后
  11. 江苏开放计算机绘图作业1,江苏开放大学计算机绘图形考2
  12. 比较浮点值有多危险?
  13. Tomcat配置阿里云免费的SLL证书
  14. 特定时间循环增加一个时间段值
  15. 不要问我有多懒,写个脚本跑django
  16. 使用STM32或GD32解析xml格式数据
  17. 织梦采集插件-简单好用织梦采集插件
  18. 编程差的程序员,90%都是吃了数学的亏!骨灰级开发:方法不对,努力也白费...
  19. Android FBReader基础资料文档
  20. MySQL- where条件 in 条件优化

热门文章

  1. 标准正态分布_正态分布,正态分布如何变换为标准正态分布
  2. 数组字典_VBA数组与字典解决方案第34讲:数组的传递
  3. update关联一个视图的时候特别慢_实现一个简单的Vue.js
  4. python的open函数百度百科,open函数
  5. if嵌套while循环语句_Python学习笔记015--while循环嵌套
  6. PHP调整图片饱和度,window_Win10系统电脑屏幕的饱和度如何调整?,什么是饱和度? 对电脑来说 - phpStudy...
  7. pagehelper的使用_SpringBoot项目中,如何更规范的使用PageHelper分页?
  8. oracle 左取,oracle 取子串(转)
  9. 7段均衡器最佳调节图_超高级的吉他均衡器 更细腻的控制 你值得拥有
  10. element ui 多个子组件_vue前端UI框架,一点都不圆润,盘它!