乐趣区

关于前端:厂商-push-不通排查指南

简介: 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

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

退出移动版