我们知道,使用Cloud Messaging发送的Firebase通知将传递到通知托盘,并且如果应用程序在后台,则与之一起发送的数据将包含在意向中。参见here。
但是,如果用户未单击通知,我将丢失通过通知发送的数据。 我想知道是否有一种方法可以获取数据,而与用户是否清除通知或与之交互无关。我不想发送两条消息,即一条通知和一条消息仅具有将在onMessageReceived方法中作为Firebase处理的数据有效载荷不能保证传递顺序。
答案 0 :(得分:0)
我的意思是。如果您收到通知,并且想要获取通知中发送的数据,那么无论应用程序是在后台还是在前台,"remoateMessage.getData()"
都是获取数据的方法。
Check this link for more info and read the official docs.
Official documentation for Notification in FCM.
就我而言,我正在从服务器获取json格式的数据,并将其转换为json对象,就像这样...
JSONObject jsonObject = new JSONObject(remoteMessage.getData());
如果通知数据包含任何标题,描述或正文,那么我正在使用此...
String title = jsonObject.getString("title");
String description = jsonObject.getString("description");
JSONObject bodyJsonObject = new JSONObject(jsonObject.get("body").toString());
在这种情况下,我没有任何数据丢失。无论应用程序是在后台还是在前台。只要Internet正在努力从FCM获取数据。
我们使用C#语言通过api实现。NotificationData也是我们在服务器上创建的json对象。
JObject Bodydata = new JObject();
Bodydata["NotificationData"] = JToken.FromObject(NotificationData);
var data = new
{
to = deviceId,
data = new
{
body = Bodydata.ToString(), // this is the json which we create based on the data we need to send.
title = title,
description = description
}
};