华为Push Kit API onRemoteMessageReceived无效 无法读取通知负载数据
你遇到的问题有两个核心诱因:
- 你推送的是同时携带
notification和data字段的通知栏消息,华为HMS Push Kit对这类消息的处理逻辑是:应用后台时系统直接渲染通知栏,点击后默认不会触发你注册的onRemoteMessageReceived回调,你缺少通知点击事件的监听逻辑 - 你提到的官方教程d点覆写错误未解决,且当前Manifest配置缺少Push消息接收服务的注册,导致HMS服务拿到token后直接销毁,无法承接后续的消息回调
解决步骤
- 修正Manifest配置
在你现有的application标签下追加Push服务注册配置:
<service android:name="com.huawei.hms.push.rn.plugin.HMSPushService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT" /> </intent-filter> </service>
- 新增通知点击事件监听
在你的App组件初始化逻辑里追加onNotificationOpenedApp事件监听,用来获取用户点击通知打开应用时的完整负载,包括通知的body内容和自定义data字段:
HmsPushEvent.onNotificationOpenedApp(result => { // 读取通知body内容 console.log('通知正文:', result.notification.body); // 读取自定义data字段 console.log('自定义参数:', result.data); });
可选适配全场景接收
如果你需要不管应用在前台还是后台都能主动捕获消息,可修改推送的payload结构:去掉外层的notification字段,所有通知内容和自定义参数都放到data字段里,这类纯数据消息会直接触发你已经注册的onRemoteMessageReceived回调,你可以在回调里自行渲染本地通知、处理业务逻辑。修正推送payload语法错误
你提供的推送JSON里token字段语法有误,存在多余的横杠、引号闭合错误,发送推送前需修正格式,避免推送下发失败。
内容的提问来源于stack exchange,提问作者Luca Parlapiano
相关产品推荐
相关产品推荐

