厂商 push 不通排查指南

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

厂商 push 不通排查指南

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

一、push 相关背景

1% C S G u T b.push 整体架构

E H ( R 1接触最多的国内 Android 设备为例,整体结构如N # m X $下:

厂商 push 不通排查指南

2.厂商 push 和自建 push

厂商 push 通道:优点是通过各个 OS 厂商维护的长链接进行推送,在 App 被! f 5 2 z { ~ C |系统杀掉后也可以进行推送,推送到达率高于自建push。支持华为,小米,oppo,vivo等厂商。缺点是,目前厂商的push基本都只支持通知栏消息的推送,用户点击通知前,不启动应用,对红点7 P A K j ) F, 图片等消息~ a I ! h R 格式支持有限。

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

二、问题排查举例

通过上面的介绍,可以看出三方厂V f / 4 L r ; N }商 push 是否成功,主要取决于三个链路,分别为:

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

1.测试准备

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

2.三方 token 生成阶段

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

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

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

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

厂商 push 不通排查指南

2.2 生成三方 token

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

厂商 push 不通排查指南

我们查看华为定义的错误码f ! G o,发现| [ @ ! k V A = }2表示 SERVICE_VER% & o 2 c q T I $SION_UPDATE_REQUIRED,需要升级当前的 HMS 版本。

厂商 push 不通排查指南

升级HMS版本的方案有两个

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

在启动阶段调用如下服务,. - l A U j + L安装更新华为推送服务

if (HuaweiApiAvw : j U @ f ` + vailability.getInstance().isHuaweiMoe V 7 , - F -bileNoticeAvailable(contY P - x G } m UextM , E k T) == ConnectionReo X $ ~ 3 9 [ .sult.SERVICE_VE6 W j A / ARSION_UPDATE_REQUIRED) {

// 需要升级

Huv O E 3 m o ?aweiApiAvailW 9 #ability.getInstance().resolveError(activity, ConnectionRes` i B 9 1 ult.SERVICE_VERSION_UPDATE_REQUIRED, 1);

}

厂商 push 不通排查指南

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

2.3 三方 token 正常上报

生成 token 后会通过 RPC 接口上报到 MPS 服务端,需要检查 RPC 接口是否有异常,上报接口是:alipay.client.yunpushcore.device.reporp 3 X 9 ^ l l @t

厂商 push 不通排查指南

2.4 token 过期

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

厂商 push 不通排查指南

3.服务端投送阶段) X j

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

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

3.2 三方服务端报错

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

3.3 三方服务端限流

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

4. 设备显示阶段

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

g o . & z x e n如 oppo 的通知权限默认是关闭的,需要打开通知权r . & T L T k 5 2限,或者引导用Y p ) } x * E户打开后才能显示。

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

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

三、其他常见问题

1.常用日志举例

1.1 tag:mPush14

主要是 mPaaS 上层应用层日志打印,打印 push 注册 token 相以 2 - P o Z 4及自建通道 p3 _ ( , g F [ush 相关信息。

厂商 push 不通排查指南

1.2 tag: mcssdk

mcssdk 是 opp` l o - lo push sdk 的日志 tag,可以查看厂商的一些日志信息,比如查看三方 token

厂商 push 不通排查指南

2.= { B t T j E I其他思路

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

  • oppo FAQ
  • vivo FAQ

作者:荣阳

本文为阿里云原创内容,未经允W y T y F q W许不得转载