[英]Android FCM - onMessageReceived not called on background
我正在使用FCM。 通知工作正常,并且在前台上调用onMessageReceived,但是当我在应用程序处于后台/终止状态时收到通知时,永远不会调用该方法。
我正在按照Firebase文档的建议使用数据消息,但没有成功...
FCM有3种通知
1.通知消息 Json正文将仅具有notification
标签,如果应用程序在后台,FCM将在客户端应用程序中自动显示通知。 onMessageReceived()
将在前台同时调用。 在后台,不会调用onMessageReceived()
。
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
2.数据消息 Json正文将仅具有data
标签开发人员必须显示通知。 onMessageRecieved将在前台和后台都被调用。 json应该只包含数据标签
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
3.通知和数据消息
json主体将同时具有notification
和data
标签。 仅当应用程序处于前台状态时,才会调用onMessageReceived()
。 如果应用程序在后台并且不会调用onMessageReceived(),则通知将自动显示。
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}
有关更多信息,请阅读https://firebase.google.com/docs/cloud-messaging/concept-options
您确定要在AndroidManifest.xml中添加此类服务吗
<service android:name=".services.fcm.FirebaseService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
这是我发送的通知:
payload = new JSONObject();
notification = new JSONObject();
notification.put("title", "Avisos");
notification.put("text", "Nuevos avisos disponibles");
payload.put("data", notification);
payload.put("to", "/topics/avisos");
payload.put("priority",10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.