简介:mPaas 厂商 push 不通排查指南

1. 背景

金融级移动开发平台 mPaaS[1](Mobile PaaS)为 App 开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动应用。其中消息推送服务(Message Push Service,简称 MPS)为开发者提供了专业的移动消息推送方案,针对不同的场景推出多种推送类型,满足个性化推送需求。为了提升推送的到达率,mPaaS 集成了华为、小米等厂商的推送功能,从而有效地提高用户留存率,提升用户体验。在我们日常运维过程中,发现少部分设备在厂商push下无法push,在此分享下相关案例的排查过程,方便后续同类问题借鉴。

2. push相关背景

2.1 push整体架构

以接触最多的国内Android设备为例,整体结构如下,官网已经给出详细介绍[2],这里不在赘述。

2.2 厂商push和自建push

厂商push通道:优点是通过各个OS厂商维护的长链接进行推送,在App被系统杀掉后也可以进行推送,推送到达率高于自建push。支持华为,小米,oppo,vivo等厂商。缺点是,目前厂商的push基本都只支持通知栏消息的推送,在用户点击通知前,不启动应用,对红点, 图片等消息格式支持有限。
自建push通道:通过App启动后和自建服务端的长连接通道实现推送,缺点也很明显,App被杀掉后,就无法收到信息。主要用于不支持厂商渠道场景下的push。

3. 问题排查举例

通过上面的介绍,可以看出三方厂商push是否成功,主要取决于三个链路,分别为:
1) 三方token正确生成上报
2) 服务端正常转发到厂商服务器
3) 下发到客户端消息可以正常显示

3.1 测试准备

为了快速验证问题,我们需要准备一个推送程序,可以快速推送信息到App上。MPS提供了推送的Http接口供外部调用,我们可以通过初始化一个简单的java程序实现推送信息的发送,方便联调。可参考文后资料了解详情[3] 。

3.2 三方token生成阶段

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

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

以华为设备为例,判断是否是华为设备的标准是,检测当前手机是否是emui, 如果是才走华为PUSH SDK。在我们日常运维的case中,发现过部分设备由于刷机或者其他操作,在华为手机上安装的不是emui,类似这种设备是走不了华为push的,只能走自建push。
以vivo设备为例,低版本手机只有在vivo公布的白名单设备内才支持推送。白名单可参考文后资料了解详情[4]。

3.2.2 生成三方token

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

我们查看华为定义的错误码,发现2表示SERVICE_VERSION_UPDATE_REQUIRED,需要升级当前的HMS版本。可参考文后资料了解详情[5]。

升级HMS版本的方案有两个

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

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

方案2: 引导用户去华为设置里去升级
可参考文后资料了解详情[6]

3.2.3 三方token正常上报

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

3.2.4 token过期

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

3.3 服务端投送阶段

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

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

3.3.2 三方服务端报错

这种主要用作mPaas服务端推送到三方服务端后,三方返回异常。这种需要去MPS拉取服务端报错日志,然后核对厂商文档解决,比如华为服务端报错文档,可参考文后资料了解详情[7]。

3.3.3 三方服务端限流

以vivo为例,默认推送走的是运营消息,每天只能对同一个用户推送5次。只有改成系统push类型才能取消该限制,可参考文后资料了解详情[8]

3.4 设备显示阶段

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

比如oppo的通知权限默认是关闭的,需要打开通知权限,或者引导用户打开后才能显示。

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

应用的包名要和注册oppo平台填写的包名要一致,不然不会显示

4. 其他常见问题

4.1 常用日志举例

4.1.1 tag:mPush14

主要是mPaas上层应用层日志打印,打印push注册token相以及自建通道push相关信息

4.1.2 tag: mcssdk

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

4.2 其他思路

如果以上都解决不了,最后建议联系厂商。

参考文档

[1] mPaaS平台:https://www.aliyun.com/product/mobilepaas/mpaas
[2]Push整体架构:https://help.aliyun.com/document_detail/97485.html?spm=a2c4g.11186623.6.745.6a06530dwB0Zp0
[3] API 说明 - 服务端: https://help.aliyun.com/document_detail/158619.html
[4]vivo白名单:https://dev.vivo.com.cn/documentCenter/doc/156
[5] 华为通用结果代码:https://developer.huawei.com/consumer/en/doc/development/HMS-2-References/hmssdk_jointOper_api_reference_errorcode
[6]如何更新HMS Core(华为移动服务):https://consumer.huawei.com/cn/support/content/zh-cn04461342/
[7] 华为服务端报错文档:https://developer.huawei.com/consumer/cn/doc/development/HMS-2-References/hmssdk_huaweipush_api_reference_agent_s2
[8] vivo推送消息分类功能说明:https://dev.vivo.com.cn/documentCenter/doc/359

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

原文链接:https://developer.aliyun.com/article/781276?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

mPaas 厂商 push 不通排查指南相关推荐

  1. 厂商 push 不通排查指南

    简介: MPS 集成多个三方渠道,保障 push 使命必达的必须知道的几件事. 为了提升「MPS 消息推送」的推送的到达率,mPaaS 集成了华为.小米等厂商的推送功能,从而有效地提高用户留存率,提升 ...

  2. 华为服务器报错信息,厂商 push 不通排查指南

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

  3. 排查指南 | mPaaS 小程序提示“网络不给力”时该如何排查?

    当 Android 应用打开 mPaaS 小程序出现"网络不给力,请稍后再试"时,应该如何排查问题? 在我们集成 mPaaS 插件并使用小程序的过程中,很多开发者会遇到了打不开小程 ...

  4. 高通5G平台(SDX55\SDX62\SDX65):ping包异常问题排查指南

    高通5G平台:ping包异常问题排查指南 1. 背景 2. Ping包数据流走向及网络架构 2.1 终端与网络架构图 2.2 终端与基站之间协议栈数据流走向图 3. Ping包问题常见分析思路 3.1 ...

  5. 开放下载!《Rocket MQ 使用排查指南》精解100+常见问题

    简介:6个要点掌握Rocket MQ原理,5步教程快速入门Rocket MQ ,云运维工程师不可错过的匠心之作 发送消息耗时太久?客户端发送常见异常报错?启动发送端连接异常?Java 进程消息堆积严重 ...

  6. 云资源中的低成本战斗机——竞价实例,AWS、阿里云等六家云厂商完全用户使用指南

    https://zhuanlan.zhihu.com/p/128692430 云资源中的低成本战斗机--竞价实例,AWS.阿里云等六家云厂商完全用户使用指南 原创 灵魂工作室 速石科技 2019-10 ...

  7. # 驱动安全编码排查指南

    驱动安全编码&排查指南 ​ 作者: 魏来 什么是驱动 驱动程序是IoT设备能驱使外设的一种代码程序.不常接触底层开发的读者可能会有一个误区,认为驱动程序是运行在外设器件里的.但是,其实驱动程序 ...

  8. 有线电视显示无服务器,有线电视常见故障排查指南!只需这几招,就能轻松搞定...

    原标题:有线电视常见故障排查指南!只需这几招,就能轻松搞定 有线数字电视机顶盒可能会出现的一些故障该怎么办? 节目内容无法正常收视 ♦1.如果您的有线数字电视服务时限尚未到期,但因为长时间不使用机顶盒 ...

  9. RTT串口V1版本的使用分析及问题排查指南(一)

    本文由RT-Thread论坛用户123原创发布:https://club.rt-thread.org/ask/article/2894.html RTT串口V1版本的使用分析及问题排查指南(一) 简述 ...

最新文章

  1. 为什么很难创造出新的处理器?
  2. 【若依(ruoyi)】模态框
  3. hive 函数 Cube
  4. 10到十分精彩的智力题,你能过关几道?
  5. 19复变函数的积分(五)
  6. About 日常生活感想
  7. BZOJ1396: 识别子串(后缀自动机,线段树)
  8. html5微信分享图标和文本设置,科技常识:Html5 实现微信分享及自定义内容的流程...
  9. iphone pop服务器没有响应,iPhone 6 Plus跳屏或者触摸失灵的解决办法
  10. Windows2003搭建IIS网站
  11. Flink SQL Size of the state is larger than the maximum permitted memory-backed state
  12. idea查看代码行数Statistic
  13. sqlite C接口增删改查,数据库优化
  14. 如何写linux软件专利,Linux之父:软件专利和方法专利都挺扯淡
  15. IE和谷歌浏览器主页被篡改的修复
  16. 浙江中级聘用计算机还需要吗,浙江省中级高级职称计算机考试要考几个模块?...
  17. TFN TD11M 观察手用 手持式热像仪双光谱 双光谱测距热成像仪
  18. Java 处理字符串中的敏感词 配置模式
  19. 验证失败,可能为XMind 2013 Pro序列号。XMind 8 pro 激活教程
  20. i.MX6ULL系统移植:Linux移植3 - make xxx_defconfig分析

热门文章

  1. 从零开始学习docker(十八)Swarm mode 部署wordpress
  2. Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境
  3. 再见,Navicat!这个Pycharm的兄弟真香!
  4. 2020最值得学习的12款python-web开发框架大盘点
  5. 互联网 4 大发明之二维码,你如何使用 Python 生成二维码?
  6. 如何使用Python玩转PDF各种骚操作?
  7. java 找茬,找茬。解决方法
  8. c语言vc数据类型长度,vc和gcc对C语言数据类型长度的定义
  9. python转化成excel_python转换excel成py文件
  10. element标签弹窗_如何在element plus中实现不同弹窗传值