Уведомление Firebase не получено в onMessageReceived, когда приложение находится в фоновом режиме - PullRequest
0 голосов
/ 22 апреля 2020

Я использую FCM для отправки уведомления в моем приложении, и все отлично работает, но когда мое приложение работает в фоновом режиме, уведомление обрабатывается android системным треем уведомлений

Я хочу обработать мой Уведомление от себя. Я отправляю эту полезную нагрузку для отправки уведомления

$fields = array(
        'notification' => $notification,
        'to'  => '/topics/updates'
        );

, это вызовет мой onMessageReceived, когда мое приложение находится в forground, но когда мое приложение находится в фоновом режиме, это не вызовет мой onMessageReceived запрос обрабатывается самой системой

я хочу позвонить моему onMessageReceived, когда мое приложение находится в background

я также пытаюсь удалить notification key и только отправить data key вот так

$fields = array(
        'data' => $notification,
        'to'  => '/topics/updates'
        );

но когда я отправляю запрос сверху, поле onMessageReceived не вызывается в обоих условиях в forground and background

я пробую это в моем xiaomi redmi note 4 (oreo) , redmi 4x(android 10) и android emulator(marshmello)

Я следую этому и решаю мою проблему, но не работаю для меня Как обрабатывать уведомления, когда приложение в фоновом режиме в Firebase

моя версия FCM 17.3.4 и моя android студийная версия 3.5.3

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

извините за публикацию этих глупых вопросов. FCM работает в фоновом режиме, когда мы публикуем только ключ данных, а не ключ уведомления.

Моя ошибка в том, что я обертываю свой конструктор уведомлений этим

if (remoteMessage.getNotification() != null) {
 // other code
}
0 голосов
/ 22 апреля 2020

Если сообщение с данными не получено, то полезная нагрузка может быть неправильной. Вот мой пример полезной нагрузки (. js, но структура должна быть почти такой же):

const  payload = {
            data: {
                title: finalTitle,
                body: message,
                icon: icon
            },
            topic: channel
        };

admin.messaging().send(payload)
        .then((response) => {
            return
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...