在后台检索Firebase通知数据

时间:2018-10-30 04:27:35

标签: android firebase firebase-cloud-messaging android-notifications

我们知道,使用Cloud Messaging发送的Firebase通知将传递到通知托盘,并且如果应用程序在后台,则与之一起发送的数据将包含在意向中。参见here

但是,如果用户未单击通知,我将丢失通过通知发送的数据。 我想知道是否有一种方法可以获取数据,而与用户是否清除通知或与之交互无关。我不想发送两条消息,即一条通知和一条消息仅具有将在onMessageReceived方法中作为Firebase处理的数据有效载荷不能保证传递顺序。

1 个答案:

答案 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
    }
};