Извлечение данных уведомления Firebase в фоновом режиме - PullRequest
0 голосов
/ 30 октября 2018

Мы знаем, что уведомление Firebase, отправленное с помощью Cloud Messaging, будет доставлено в трей уведомлений, и данные, отправленные вместе с ним, будут добавлены в намерения, если приложение находится в фоновом режиме. Смотрите здесь .

Однако я теряю данные, отправленные через уведомление, если пользователь не нажимает на уведомление. Я хотел бы знать, есть ли способ получить данные независимо от того, очищает ли пользователь уведомление или взаимодействует с ним. Я не хочу отправлять два сообщения, а именно одно уведомление и одно сообщение с только полезная нагрузка данных, которая будет обработана в методе onMessageReceived как firebase, не гарантирует порядок доставки.

1 Ответ

0 голосов
/ 30 октября 2018

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