Push-уведомление не отображается на Android

#android #firebase #flutter #google-cloud-functions #firebase-cloud-messaging

# #Android #firebase #флаттер #google-cloud-функции #firebase-облако-обмен сообщениями

Вопрос:

Я создаю приложение flutter, используя FCM для отправки push-уведомлений. Я отправляю уведомления с облачными функциями с веб-сайта, отправляя JSON на устройство. Однако это отлично работает на iOS (появляется уведомление) на Android я получаю звук, а уведомление появляется только в строке состояния. Любые советы о том, как заставить его всплывать?

Это JSON, который я отправляю:

 {
    "message":{
        "token" : result,
        "notification" : {
            "body" : body,
            "title" : title,
        },
        "data": {
            "body": body,
            "title": title
        },
        "apns": {
            "headers": {
                'apns-priority': '10',
            },
            "payload": {
                "aps": {
                    "sound": 'default',
                }
            },
        },
        "android": {
            "priority": 'high',
            "notification": {
                "sound": 'default',
            }
        },
    }
}
 

Комментарии:

1. Не могли бы вы поделиться облачной функцией, которую вы написали, и указать, как вы отправляете push-уведомления? Пожалуйста, поделитесь минимальными воспроизводимыми шагами, которые помогут вам лучше. Также, пожалуйста, ознакомьтесь со следующей официальной документацией Firebase для отправки сообщений на несколько устройств.

Ответ №1:

Вы правильно устанавливаете «приоритет»: «высокий», но я думаю, что это может быть случай, когда FCM понижает приоритет. Это из документации FCM:

Сообщения с высоким приоритетом обычно должны приводить к взаимодействию пользователя с вашим приложением или его уведомлениями. Если FCM обнаружит шаблон, в котором они этого не делают, ваши сообщения могут быть понижены в приоритете.

Если ваше приложение находится на переднем плане, вы можете добиться желаемого поведения, если установите приоритет NotificationChannel, а также приоритет уведомлений в NotificationBuilder на высокий приоритет. Если приложение находится на переднем плане, уведомление создается вашим расширенным FirebaseMessagingService, и можно установить приоритет.

Но если приложение находится в фоновом режиме или закрыто, уведомление создается системой в панели уведомлений.

Это применимо, если вы отправляете оба notification и data возражаете.

Возможное решение — отправить только data объект (без notification объекта). Таким образом, уведомление всегда создается FirebaseMessagingService. Независимо от того, находится ли приложение на переднем плане, в фоновом режиме или закрыто. Смотрите эту таблицу эта таблица

Ответ №2:

Добавьте эту строку в свой канал создания уведомлений:

 channel.setShowBadge(true);