首页 > 解决方案 > 在后台检索 Firebase 通知数据

问题描述

我们知道,使用 Cloud Messaging 发送的 Firebase 通知将被传送到通知托盘,并且如果应用程序在后台,与它一起发送的数据将在 Intent 的附加部分中。见这里

但是,如果用户不点击通知,我会丢失通过通知发送的数据。我想知道是否有一种方法可以获得数据,而不管用户是否清除通知或与之交互。我不想发送两条消息,即一条通知和一条仅包含将在 onMessageReceived 方法中处理的数据有效负载的消息,因为 firebase 不保证传递顺序。

标签: androidfirebasefirebase-cloud-messagingandroid-notifications

解决方案


我的意思是。如果您收到通知并且想要获取您在通知中发送的数据,那么"remoateMessage.getData()"无论应用程序是在后台还是前台,都是获取数据的方式。

检查此链接以获取更多信息并阅读官方文档。

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());

在这种情况下,我没有丢失任何数据。无论应用程序是在后台还是前台。前提是互联网正在努力从 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
    }
};

推荐阅读