android - 在后台检索 Firebase 通知数据
问题描述
我们知道,使用 Cloud Messaging 发送的 Firebase 通知将被传送到通知托盘,并且如果应用程序在后台,与它一起发送的数据将在 Intent 的附加部分中。见这里。
但是,如果用户不点击通知,我会丢失通过通知发送的数据。我想知道是否有一种方法可以获得数据,而不管用户是否清除通知或与之交互。我不想发送两条消息,即一条通知和一条仅包含将在 onMessageReceived 方法中处理的数据有效负载的消息,因为 firebase 不保证传递顺序。
解决方案
我的意思是。如果您收到通知并且想要获取您在通知中发送的数据,那么"remoateMessage.getData()"
无论应用程序是在后台还是前台,都是获取数据的方式。
在我的情况下,我从服务器获取 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
}
};
推荐阅读
- ios - MobileIron 环境中的 Ionic iOS App WebKit 崩溃
- javascript - 将构造函数中的类值设置为参数
- javascript - 如何在引导程序 4 中切换字体真棒图标与可折叠?
- rest - 为什么 https 方法放置和删除
- numpy - 如何使用 numpy 调整 4D 图像的大小?
- android - 使用 PhotoEditor SDK 重新编辑具有相同名称的图像仅返回对原始图像的最新更改
- cloud - Quick BI 中的计算列
- java - 自定义线程 run() 不通过 Spring AOP 调用
- android - 固定图像视图的高度和宽度
- ios - 如何根据标签存储文本