HarmonyOS 鸿蒙Next接入极光推送的相关问题
HarmonyOS 鸿蒙Next接入极光推送的相关问题 有没有大佬用过极光推送(第三方推送服务)的,Help me
开发中,要求使用极光推送。
遇到了一点问题。
当应用处于后台时,极光推送发送的通知消息,真机能接收到通知,但是由于极光推送在后台会自主断开长连接(极光服务器推送消息,中间走厂商通道),就不会触发接收消息的事件,导致相应业务不会进行。有没有什么办法能够订阅到通知内容或者能解决这个问题。尽量不要换一个推送服务。
这个其实是极光 + 厂商通道的典型问题,你现在遇到的是:
“通知到了,但业务回调没触发”
原因不是你代码有问题,而是:
消息已经走“鸿蒙厂商通道”了
不是走极光长连接通道
———————— 极光在 HarmonyOS / Android 上其实有两套通道:
1、极光自建长连接通道 2、厂商系统通道(华为 Push Kit / 鸿蒙 Push)
—— 当 App 在前台时:
一般走:
极光长连接
这时候:
onMessage
onNotifyMessageArrived
onCustomMessage
这些都能收到。
———————— 但:
App 退后台后, 极光为了省电: 会主动断开长连接。
官方现在甚至明确提供了:
setBackgroundEnable()
配置后台是否保活。
———————— 然后通知就会:
自动切到:
鸿蒙厂商通道
也就是:
Push Kit
———————— 重点来了:
厂商通道下:
通知是:
系统直接展示
不会经过:
极光 SDK 消息回调
所以:
你看到:
- 通知栏有消息
- 但业务事件没触发
这是正常现象。
———————— 极光官方文档里已经写了:
onArrivedMessage
仅极光通道会触发
厂商通道暂不支持
———————— 所以:
你现在不能依赖:
通知到达事件
来做业务逻辑。
这是设计层面的问题。
————————
正确做法有几个:
方案1(推荐)
改成:
通知 + 自定义消息 双发
这是业内最常见方案。
例如:
- 通知:走厂商通道
- 数据:走自定义消息
这样:
前台时:
能收到业务回调
后台时:
至少:
通知不会丢
————————
方案2
点击通知时处理业务。
不要依赖:
通知到达
而是:
通知点击
HarmonyOS 极光支持:
setClickWant()
获取通知附带 extras。
例如:
let j = await JPushInterface.setClickWant(want)
然后:
从 extras 恢复业务
很多 IM / OA 都这么干。
————————
方案3(不太推荐)
强行后台保活极光长连接。
例如:
setBackgroundEnable(true)
但问题是:
HarmonyOS 后台管控比 Android 更严。
即使你保活:
- 也可能被系统杀
- 也可能被休眠
- 也可能最终还是切厂商通道
所以:
不能完全依赖
————————
方案4(最稳定)
真正接入:
华为 Push Kit
然后:
- 极光只做聚合
- 真正业务监听走 Push Kit
因为:
鸿蒙厂商通道最终本质就是:
Push Kit
———————— 所以结论其实很简单:
你现在这个现象:
是极光厂商通道的正常行为
不是 Bug
后台后:
通知由系统托管
不会再走 SDK 回调
———————— 建议你:
不要把:
“通知到达”
作为业务触发入口。
而应该:
- 点击通知时恢复业务
- 或通知 + 数据双通道
- 或服务端状态同步
这是推送系统里更稳定的架构。
更多关于HarmonyOS 鸿蒙Next接入极光推送的相关问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
大佬讲的很通透,我之前有想过方案2和方案3,但是要求就是不用点击通知就会处理业务。而方案3目前行不通,因为这个接口
setBackgroundEnable(true)
支持的SDK版本是1.3.5,而极光官方里支持鸿蒙的SDK只发布到1.3.1
当应用处于后台时,极光推送发送的通知消息,真机能接收到通知。这时手机端集成的极光SDK还和极光平台保持着长连接,所以可以收到通知。
当断开连接时,要想收到消息,需要走极光–>华为鸿蒙(厂商)–>手机端这个通道。在极光平台配置。
参考《厂商通道参数申请指南》这个配置下。
2楼那个能解决你的问题,先用着。这个方法需要配置的挺多的。
很显然鸿蒙是参照iOS的推送逻辑写的,而iOS的推送逻辑就是APP和系统只能收到推送消息,而无法自动唤醒APP执行逻辑事件。
你这条路走不通哦!
极光推送已推出鸿蒙Next专用SDK,基于ArkTS/TS开发。接入时需在工程中引入@jpush/react-native-harmony或原生鸿蒙SDK包,配置AppKey与华为推送通道。需在module.json5中声明推送权限,并在entry中初始化JPushInterface。注意鸿蒙Next不支持旧版Java桥接,务必使用官方提供的鸿蒙API。
在 HarmonyOS Next 上,极光推送的通知消息走的是华为推送服务(厂商通道),应用在后台时系统直接弹出通知栏提示,不会回调应用内的事件处理方法。要触发业务逻辑,应使用自定义消息(透传消息),这类消息不依赖厂商通道,即使在后台也会触发应用内回调(前提是应用进程存活或可被拉起)。具体做法:
- 在极光控制台发送消息时,选择「自定义消息」而非「通知」。
- 应用侧在
MyApplication中设置消息接收器,实现JCommonInterface的onMessage方法,从中解析自定义消息内容执行业务。
若业务要求必须用通知,可监听通知的点击事件:在 Ability 的 onNewWant 或 onStart 中解析 Want 参数获取透传的附加字段,但仅限用户点击通知时触发。关键点:后台接收通知不走应用回调,改用自定义消息或点击唤起处理。


