HarmonyOS 鸿蒙Next 华为推送,为何收到推送后不会进入HmsMessageService的onMessageReceived的方法里?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 华为推送,为何收到推送后不会进入HmsMessageService的onMessageReceived的方法里?

如题,项目集成了华为推送,现在要实现收到推送后实时更新app角标的功能,查了文档,只能找到和接收推送有关的方法:在继承HmsMessageService的自定义service里的onMessageReceived方法里,但无奈怎么尝试始,来推送时死活进入不到该方法里,想请教论坛里的各位前辈,这个如何解决?或者是使用华为推送时如何去实时更新角标?

13 回复

您好,相关问题这边帮您核实一下。

更多关于HarmonyOS 鸿蒙Next 华为推送,为何收到推送后不会进入HmsMessageService的onMessageReceived的方法里?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


桌面角标

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-badging-0000001050042083

感谢回答,现在主要是不知道把这些更新角标的代码放在什么地方。唯一一个能想到的地方就是华为service的onMessageReceived里,但目前来推送消息时死活进不去这个方法体里,还望指教,谢谢!!!!

您好,
首先,关于设置角标的问题,推送服务提供了在服务端设置桌面角标的API接口,开发者可以在消息中封装角标参数。如果消息为通知栏消息,推送服务负责应用桌面角标数量的展示。如果消息为透传消息,开发者可以调用getBadgeNumber()方法获取消息中的角标数字并展示角标数字值。具体可以参考https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/android-badging-0000001050042083-V5
然后,关于onMessageReceived()方法接收不到消息:
1、请检查AndroidManifest.xml文件是否正确设置继承HmsMessageService的service,可以参考
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/android-cfg-manifest-0000001050042037-V5
2、请确定发送的消息是否是透传消息

很感谢你,但是当推送消息送达到手机时onMessageReceived这个方法没被调用,导致我没地方去更新角标。清单文件里我也正确地继承了HmsMessageService的。

首先,设置角标的两种方法:

1、通过发送通知消息方式,添加角标参数,角标可以直接展示,不需要您应用进行处理,也不需要应用启动;

2、通过发送透传消息方式,消息的内容通过onMessageReceived()方法回调,需要在消息发送时应用处于启动状态(前台或者后台)。


然后,关于onMessageReceived()方法没有回调:

1、请确认发送透传消息时,应用是否启动;

2、如果还是有问题,请提供应用的日志,终端设备上抓取日志的方法:

1) Adb连上手机后,分别执行下面命令:
adb shell setprop log.tag.hwpush VERBOSE  
adb logcat -v threadtime 1> D:\hwpush.log
2) 复现问题场景。
3) 按“Ctrl+C”完成。
    同时请您尽可能记录出现问题的设备型号、EMUI版本号、HMS Core(APK)版本号、集成的SDK版本号

普通的通知栏消息是不是不走onMessageReceived()方法?

您好

是的,通知栏消息不走这个方法回调,通知消息到达或者点击消息,也没有方法回调

但是文档上为什么说可以走

image.png

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

您好

您观察的很细致,但是您提供的截图只是一个特殊场景用法,普通的通知消息并不会通过onMessageReceived(RemoteMessage message)方法回调。

当“message.android.notification.foreground_show”字段设置为“false”时,应用在前台时,通知消息并不会在通知栏进行展示,此时的消息形式更像是透传消息,可以通过onMessageReceived(RemoteMessage message)方法回调

你好,
在收到服务端透传消息后,onMessageReceived方法App在10秒内未处理,第二次服务端为什么会导致推送透传消息报错呢?

在HarmonyOS 鸿蒙Next版本中,若收到推送后未进入HmsMessageServiceonMessageReceived方法,可能原因包括:

  1. 服务未正确注册:请确认HmsMessageService已在AndroidManifest.xml中正确注册,并指定了正确的权限和intent-filter。

  2. 推送消息类型不匹配:不同类型的推送消息(如数据消息、通知消息)可能触发不同的回调。请检查推送的消息类型与HmsMessageService中期望处理的消息类型是否一致。

  3. 应用状态:若应用在后台或被系统休眠,部分推送可能无法即时触发onMessageReceived。请检查应用状态管理策略。

  4. 系统或版本问题:某些HarmonyOS版本可能存在推送服务相关的bug。请确认设备已更新至最新系统版本,并检查是否有相关的系统更新说明。

  5. 第三方库或依赖冲突:检查项目中是否有其他推送服务库或依赖与HMS Push冲突。

  6. 日志调试:开启详细日志记录,检查推送接收及处理的完整流程,定位问题所在。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部