厂商 push 不通排查指南

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

TB1CMLMcOpE_u4jSZKbXXbCUVXa-3840-740.gif

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

一、push 相关背景

1.push 整体架构

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

1.png

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.png

2.2 生成三方 token

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

3.png

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

4.png

升级HMS版本的方案有两个

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

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

5.png

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

2.3 三方 token 正常上报

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

6.png

2.4 token 过期

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

7.png

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 相关信息。

8.png

1.2 tag: mcssdk

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

9.png

2.其他思路

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

作者名片-荣阳.jpg

0.png.jpg

END


延伸阅读

动态-logo.gif

底部banner.png

点击了解「MPS 消息推送」更多资讯

相关文章
|
1月前
|
运维 监控 数据挖掘
应用研发平台EMAS产品常见问题之华为离线推送接收失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
4天前
|
持续交付 开发工具 git
云效产品使用常见问题之同时指定多个 tag 推送失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3天前
|
敏捷开发 Java 测试技术
云效产品使用常见问题之主机部署成功失败的返回值获取失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
前端开发 Android开发 iOS开发
应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
【2月更文挑战第31天】应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
32 2
|
1月前
|
运维 监控 Android开发
应用研发平台EMAS常见问题之安卓push的离线转通知目前无法收到如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
25 1
|
1月前
|
移动开发 运维 监控
应用研发平台EMAS产品常见问题之rn的插件收不到通知消息如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
运维 监控 Java
应用研发平台EMAS常见问题之不设置SendChannels无法收到推送如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
18 1
|
1月前
|
运维 监控 Android开发
应用研发平台EMAS常见问题之需要设置角标如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
22 2
|
7月前
|
开发框架
"应用研发平台EMAS被动清除次数
"应用研发平台EMAS被动清除次数
41 1
|
运维 Java 开发工具