#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);