mPaaS云平台运维系列之—移动推送三方push

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
mPaaS订阅基础套餐,标准版 3个月
简介: 移动推送三方push

背景

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

2.实现原理

1push整体架构

以接触最多的国内Android设备为例,整体结构如图1-1所示。

image.png

图1‑1 Android PUSH介绍
2)厂商push和自建push

厂商push通道:优点是通过各个OS厂商维护的长链接进行推送,在App被系统杀掉后也可以进行推送,推送到达率高于自建push。支持华为,小米,oppovivo等厂商。缺点是,目前厂商的push基本都只支持通知栏消息的推送,在用户点击通知前,不启动应用,对红点, 图片等消息格式支持有限。

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

3 问题排查举例

通过上面的介绍,可以看出三方厂商push是否成功,主要取决于三个链路,分别为:

1三方token正确生成上报

2服务端正常转发到厂商服务器  

3下发到客户端消息可以正常显示

1)测试准备

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

2)三方token生成阶段

目前MPS对三方厂商pushtoken生成分为以下步骤。

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

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

vivo设备为例,低版本手机只有在vivo公布的白名单设备内才支持推送。名单如图6-6所示。

image.png

图1‑2 OPPO推送支持设备列表

2生成三方token

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

image.png

图1‑3 push日志

我们查看华为定义的错误码,发现2表示SERVICE_VERSION_UPDATE_REQUIRED,需要升级当前的HMS版本,如图1-4所示。

image.png

图1‑4 huawei push日志

升级HMS版本的方案有两个

方案1: 主动升级调用更新服务接口升级更新效果如图1-5所示,升级代码如下所示。

if(HuaweiApiAvailability.getInstance().isHuaweiMobileNoticeAvailable(context) == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED) {

  // 需要升级

HuaweiApiAvailability.getInstance().resolveError(activity, ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED, 1);

}

image.png

图1‑5 hms升级示意图

方案2: 引导用户去华为设置里去升级HMS, 参考华为官网链接

https://consumer.huawei.com/cn/support/content/zh-cn04461342/

3)三方token正常上报

生成token后会通过RPC接口上报到MPS服务端,需要检查RPC接口是否有异常,上报接口是:alipay.client.yunpushcore.device.report,日志如图1-6所示。

image.png

图1‑6 report调用示意图

4token过期

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

image.png

图1‑7 token过期说明
3)服务端投送阶段

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

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

2三方服务端报错

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

3三方服务端限流

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

4)设备显示阶段

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

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

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

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

目录
相关文章
|
jstorm 消息中间件 存储
mPaaS云平台运维系列之—移动分析产品介绍
移动分析服务(Mobile Analysis Service,简称 MAS)是 mPaaS 平台的一个核心基础服务组件,是一项方便您轻松地大规模收集、可视化并理解应用程序使用数据的服务。MAS 通过统计和分析客户端流量、性能质量和用户行为等数据,用数据实现产品、运营、推广的决策;通过对闪退的分析,快速定位闪退原因,提高程序稳定性。
1177 0
mPaaS云平台运维系列之—移动分析产品介绍
|
存储 运维 负载均衡
mPaaS云平台运维系列之—高可用架构介绍
mPaaS云平台运维系列之—高可用架构介绍
1254 0
mPaaS云平台运维系列之—高可用架构介绍
|
JSON 运维 负载均衡
mPaaS云平台运维系列之—产品升级方案
mPaaS云平台运维系列之—产品升级方案
712 0
mPaaS云平台运维系列之—产品升级方案
|
运维 BI 开发工具
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
66 4
|
24天前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
24天前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
59 1
|
1月前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
1月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
60 4
|
2月前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
103 1