Firebase-обмен сообщениями в фоновом режиме - PullRequest
0 голосов
/ 30 октября 2018

Я знаю, что этот вопрос очень старый и на него есть много ответов, но я не нашел своего решения.

Я хочу обновить виджет с помощью firebase-cloud-messaging, но метод Firebase onMessageReceived() не вызывается, когда приложение находится в фоновом режиме.

Я пытался изменить уведомление на данные, как в большинстве ответов здесь, но это не помогает мне: onMessageReceived() не звонит, когда приложение даже в переднем плане .

Итак, мой Firebase JSON:

{ "registration_ids": [ "ids" ], 
"priority": "high", 
"content_available": true, 
"data": {
    "id_request": "1229",
    "unreadedAnnouncements": "4",
    "requestsCount": "9",
    "survaysCount": "5", 
    "sound":"default", 
    "title":"test", 
    "message": "test", 
    "body": "test" } }

Если это имеет значение, мои Firebase-зависимости:

implementation 'com.google.firebase:firebase-core:10.2.1'
implementation 'com.google.firebase:firebase-messaging:10.2.1'
implementation 'com.google.firebase:firebase-auth:10.2.1'

Может быть, есть какие-то новые решения? На SO больше всего решений 2016 года.

Ответы [ 2 ]

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

Решение, которое мне помогло: В Firebase я только что изменил поле registration_ids на to.

Final Firebase JSON:

{ "to": [ "ids" ], 
"priority": "high", 
"content_available": true, 
"data": {
    "id_request": "1229",
    "unreadedAnnouncements": "4",
    "requestsCount": "9",
    "survaysCount": "5", 
    "sound":"default", 
    "title":"test", 
    "message": "test", 
    "body": "test" } }
0 голосов
/ 30 октября 2018
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
    super.onMessageReceived(remoteMessage);

    if (remoteMessage.getData() != null)
        sendNotification(remoteMessage);
}

тогда вы можете анализировать данные следующим образом:

    private void sendNotification(RemoteMessage remoteMessage)
    {
       Map<String, String> data = remoteMessage.getData();
       String title = data.get("title");
       String content = data.get("content");
       // your code
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...