我正在使用FCM。通知正常工作,并且在Foreground上调用onMessageReceived,但是当我在应用程序处于后台/已杀死时收到通知时,该方法永远不会被调用。
我使用数据消息作为Firebase文档建议但没有成功......
答案 0 :(得分:1)
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
标记。仅当app位于前台时才会调用onMessageReceived()
。如果app在后台并且不会调用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
答案 1 :(得分:0)
您确定要添加此服务吗? 的AndroidManifest.xml
<service android:name=".services.fcm.FirebaseService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
答案 2 :(得分:0)
这是我发送的通知:
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);