未调用 HmsMessageService onMessageReceived
Posted
技术标签:
【中文标题】未调用 HmsMessageService onMessageReceived【英文标题】:HmsMessageService onMessageReceived not called 【发布时间】:2021-02-20 11:23:26 【问题描述】:我实现了Huawei Push Kit。 onNewToken 在应用启动后调用。我想使用 onMessageReceived。
当我向客户端发送推送通知时,推送通知出现在 android 上,但未触发 onMessageReceived。
我在 Android Manifest 中添加了以下代码
<service
android:name=".HmsMessageSrv"
android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
我的简单类是;
public class HmsMessageSrv extends HmsMessageService
@Override
public void onNewToken(String s)
super.onNewToken(s);
Log.i("HmsMessageService", s);
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
super.onMessageReceived(remoteMessage);
Log.i("HmsMessageService", "onMessageReceived");
收到推送通知时如何触发onMessageReceived函数。
【问题讨论】:
【参考方案1】:onMessageReceived函数只用于接收数据报文。因此,推送通知不会触发 onMessageRecevied。您可以使用数据消息并自己创建通知。您可以通过this链接访问示例代码。
【讨论】:
【参考方案2】:当您的应用在后台运行或被终止时,您可以从推送通知中获取通知消息。为此,您需要在通知正文中将 foreground_show 设置为 false。
如果此值为 true 或未设置,则您的消息由 NC 显示。如果此值为 false,则您的消息将传输到您的应用程序,而不是由 NC 显示。
更多详情请参考:https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/android-fgrd-show-0000001050040126-V5
【讨论】:
【参考方案3】:直接显示通知消息,因此不会调用onMessageReceived方法。
只有在收到数据消息时才调用该方法。详情请参考Receiving Data Messages。但是,在您的应用进程被杀死后,数据消息无法到达您的应用。要在你的应用进程被杀死后显示通知消息,或者在你的应用运行时通过onMessageReceived接收数据消息,请参考Notification Message Display on UI。
【讨论】:
以上是关于未调用 HmsMessageService onMessageReceived的主要内容,如果未能解决你的问题,请参考以下文章
M1 mac 上的 android studio 和 manager 错误(未安装模拟器)
onDraw( ) 和 dispatchDraw( ) 的区别