Что я имею в виду. если вы получаете уведомление и хотите получить данные, отправленные вами в уведомлении, тогда "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.
Мы делаем это через API, используя язык C #. 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
}
};