当我发送Firebase主题通知时,onMessageReceived方法在应用程序处于
时不会触发在上面两种情况下,我只在系统托盘中收到通知,我想在sqlite中以编程方式处理它
以及在最近的应用程序中列出的前景和后台应用程序的工作
所以我如何得到那个通知,我想在sqlite中存储通知
我的邮递员请求在
之下 {
"to": "/topics/181_Red_Route",
"data": {
"sound": "default",
"badge": "1",
"title": "Title1",
"body": "Desc1"
},
"notification": {
"sound": "default",
"badge": "1",
"title": "Title1",
"body": "Desc1"
},
"priority": "high",
"content_available": true
}
提前致谢
答案 0 :(得分:0)
答案 1 :(得分:0)
https://firebase.google.com/docs/cloud-messaging/android/send-multiple
检查此链接是否提到,有两种方式可以发送消息有效负载。
1)通知
2)数据
如果服务器发送"数据" 有效负载,则它将在应用程序 onMessageReceived()方法中接收。您可以通过检查下面给出的有效负载,在 onMessageReceived()中对其进行管理。
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
&安培;还要检查如何进行服务器代码,传递'通知' /'数据'。
https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages
答案 2 :(得分:0)
如果您在FCM消息中发送通知标记,则当应用处于后台时,它不会触发onMessageReceived代码。
相反,始终使用数据标记发送通知。这将确保所有FCM消息都触发onMessageReceived调用。在此调用中,您可以按照常用的android方法将消息保存在数据库中。
摘要:仅发送数据标记而不发送通知标记。处理在onMessageReceived()中显示和保存通知。无论应用程序处于前台还是后台或被杀死,都可以正常工作。
警告:如果您计划启动IOS,则只有在应用处于前台或后台但尚未被杀死的情况下,才会传递带有数据标记的FCM消息。在此之前不会收到任何消息。