简介: 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 类型能力没有这个限度。

  1. 设施显示阶段

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

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