当前景 onMessageReceived 中的应用程序返回数据时,但背景中的应用程序 onMessageReceived 不会返回任何内容。 FCM将在后台或终止模式下应用时生成自动通知 我想停止自动生成的通知。
这是我的示例代码:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e(TAG, "onMessageReceived: " + remoteMessage);
Log.e(TAG, "onMessageReceived: " + remoteMessage.getFrom());
Log.e(TAG, "onMessageReceived Message Body: " + remoteMessage.getNotification().getBody());
handleNow(remoteMessage);
}
答案 0 :(得分:2)
使用FCM,您可以向客户端发送两种类型的消息:
1. 通知消息 - 有时被视为“显示消息”。这些由FCM SDK自动处理。
2. 数据消息 - 由客户端应用处理。
当应用在后台时,通知消息将传递到通知托盘。对于前台的应用程序,消息由onMessageReceived()处理:
因此,如果您使用的是高优先级消息的通知消息,如果您的应用程序处于后台,则不会在onMessageReceived()中获得回调。请改用数据信息。
您的数据信息应如下所示。
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
答案 1 :(得分:2)
使用过的通知托盘,它将在那时调用你的onMessageReceived()方法。
请查看以下链接,这对您有帮助。
https://firebase.google.com/docs/cloud-messaging/android/receive
请将数据标记添加到您的json响应中,如下所示:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}
希望这会对你有所帮助。