Есть ли какой-либо способ реализовать push-уведомления с помощью кнопок действий в flutter? С помощью firebase_messaging

#firebase #flutter #firebase-cloud-messaging #firebase-in-app-messaging

#firebase #flutter #firebase-cloud-messaging #firebase-in-app-messaging

Вопрос:

Я ищу эту функциональность:

Текст

Я ищу указатели. Не удалось найти какие-либо учебные пособия или пакеты, предоставляющие такую функциональность.

Спасибо за вашу помощь!

Ответ №1:

Пакет firebase_messaging не предоставляет никакого решения для кнопок действий. Вы можете получить свой data в своем onMessageReceived() методе. И вы можете создать свое собственное настраиваемое уведомление.

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

1. Как мне создать собственное настраиваемое уведомление?

2. Об этом есть пакет flutter_local_notifications: pub.dev/packages/flutter_local_notifications

3. Как избежать отображения уведомлений от FCM, а также уведомлений, которые вы создаете с помощью плагина с действиями? Разве вы не получили бы повторяющиеся уведомления или два, если хотите показать только одно?

4. не добавляйте поле уведомления к данным уведомлений, которые вы отправляете из серверной части, просто добавьте поле данных

Ответ №2:

Существует пакет под названием awesome_notifications, который вы можете использовать для этой цели. для добавления пользовательской кнопки действия вы можете сделать так:

     await AwesomeNotifications().createNotification(
      content: NotificationContent(
        id: 0,
        channelKey: 'basic_channel',
        title: 'Simple title',
        body: 'Simple body ',
      ),
      actionButtons: [
        NotificationActionButton(
          key: 'accept',
          label: 'Accept',
        ),
        NotificationActionButton(
          key: 'cancel',
          label: 'Cancel',
        ),
      ],
    );
  

И для выполнения действий на основе действий вы должны прослушать этот поток:

     AwesomeNotifications().actionStream.listen((event) {
      if (event.buttonKeyInput == 'cancel') //...
      else // ...
    });
  

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

Ответ №3:

** Для добавления кнопки внутри фонового уведомления ** Добавьте AndroidNotificationAction внутри AndroidNotificationDetails внутри firebase код фонового обработчика приведен ниже

   void showFlutterNotification(RemoteMessage message) {
  RemoteNotification? notification = message.notification;
  AndroidNotification? android = message.notification?.android;
  if (notification != null amp;amp; android != null amp;amp; !kIsWeb) {
    flutterLocalNotificationsPlugin.show(
      notification.hashCode,
      notification.title,
      notification.body,
      NotificationDetails(
        android: AndroidNotificationDetails(
          channel.id,
          channel.name,
          channelDescription: channel.description,
          // TODO add a proper drawable resource to android, for now using
          //      one that already exists in example app.
          icon: 'launch_background',
          actions: <AndroidNotificationAction>[
            AndroidNotificationAction('id_1', 'Action 1'),
            AndroidNotificationAction('id_2', 'Action 2'),
            AndroidNotificationAction('id_3', 'Action 3'),
          ],
        ),
      ),
    );
  }
}