#firebase #flutter #firebase-cloud-messaging
#firebase #flutter #firebase-облако-обмен сообщениями
Вопрос:
У меня есть приложение Flutter, использующее плагин firebase-messaging для push-уведомлений.
Я регистрирую firebase как обычно на клиенте и отправляю fcmToken
на сервер.
Уведомления создаются с помощью сервера python с использованием aiofcm
(который использует XMPP api firebase). Они создаются следующим образом:
message = aiofcm.Message(
device_token = t2,
notification = {
"title":notification_title,
"body":notification_body,
"sound":"default",
"tag":link
},
data = {
"click_action": "FLUTTER_NOTIFICATION_CLICK"
},
priority=aiofcm.PRIORITY_HIGH
)
await fcm.send_message(message)
На iOS уведомления всплывают в верхней части экрана.
На Android в панели уведомлений отображается только значок, а не содержимое уведомлений. Это протестировано на Pixel 3 и OnePlus 6, оба работают под управлением Android P.
В идеале, я бы хотел, чтобы уведомление было в стиле «heads-up», подобном этому:
Однако, прежде чем я смог выполнить это с помощью data
сообщений и создать уведомление программно на родном Android, я хотел бы избежать этого, если это возможно, поскольку сообщения данных не доставляются на Android, если приложение завершено.
Комментарии:
1.
notification
— полезные сообщения автоматически обрабатываются устройством Android. Если цель состоит в том, чтобы реализовать пользовательское уведомление, тоdata
это единственный (текущий) путь.
Ответ №1:
Чтобы получать уведомления «heads-up», пожалуйста, установите «alert: true»
Пример :
notification = {
"title":notification_title,
"body":notification_body,
"sound":"default",
"alert" : true
"tag":link
},
Ответ №2:
Для уведомления о предупреждении вам нужно будет использовать плагин flutter_local_notifications. В официальной документации FlutterFire для уведомлений даже рекомендуется показывать уведомление на переднем плане (фоновое уведомление, конечно, также поддерживается!), и оно показывает уведомление о предупреждении по умолчанию.
Ответ №3:
Вам следует ознакомиться с документами firebase.flutter.dev, в которых показано, как легко это сделать с помощью flutter_local_notifiation
Ответ №4:
вы можете использовать фоновую выборку и пакет локальных уведомлений для запуска фонового приложения.