简介: 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 是否胜利,次要取决于三个链路,别离为:
- 三方 token 正确生成上报
- 服务端失常转发到厂商服务器
- 下发到客户端音讯能够失常显示
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.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
原文链接
本文为阿里云原创内容,未经容许不得转载。