Flutter / Firebase — Как получить уведомление «о предупреждении» на Android?

#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:

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