Как можно показать пуш-уведомление с помощью Awesome_notification_fcm, когда приложение находится в открытом состоянии?

Я использую пакеты awesome_notification_fcm и awesome_notification. При создании полезной нагрузки уведомление приходит в фоновом режиме или когда приложение закрыто, но не отображается, когда приложение открыто. Ранее в FirebaseMessaging существовал эффективный метод onMessage, однако документация утверждает, что awesome_notification_fcm и FirebaseMessaging несовместимы. Я также пробовал использовать onFcmSilentDataHandle и вызывать createNotification в onNotificationCreatedMethod, но это не принесло результата. Возможно, кто-то сталкивался с этой проблемой и нашел решение? Искал бы способ избежать использования SilentPush, так как они не гарантируют 100% доставку.
  • 6 марта 2025 г. 14:24
Ответы на вопрос 2
Ваша задача заключается в том, чтобы обрабатывать уведомления в приложении, которое уже открыто, используя пакеты `awesome_notifications` и `awesome_notifications_fcm`. 

К сожалению, модуль `awesome_notifications_fcm` не поддерживает обработку событий уведомлений при активном состоянии приложения так, как это делает стандартный Firebase Messaging. Однако вы можете использовать подход с обработкой данных, отправляемых с FCM.

Вот общая схема того, как можно обрабатывать уведомления вручную при открытом приложении.

1. **Настройка FCM**: Первым делом убедитесь, что ваш FCM настроен правильно в Firebase Console и вы можете получать сообщения.

2. **Перехват сообщений**: Используйте метод `onFcmSilentDataHandle` для перехвата данных, когда приложение открыто.

3. **Создание уведомления вручную**: Как только вы получаете данные в `onFcmSilentDataHandle`, вы можете создать уведомление, используя `awesome_notifications`.

Вот пример:

```dart
import 'package:awesome_notifications/awesome_notifications.dart';
import 'package:awesome_notifications_fcm/awesome_notifications_fcm.dart';
import 'package:flutter/material.dart';

void main() {
  AwesomeNotifications().initialize(
    // Инициализация
  );

  AwesomeNotificationsFcm().setFcmHandler(
    onFcmSilentDataHandle: (data) {
      // Обрабатываем данные здесь
      handleNotificationCreate(data);
    },
  );

  runApp(MyApp());
}

void handleNotificationCreate(Map<String, dynamic> data) {
  // Здесь вы можете извлечь данные из сообщения
  String title = data['notification']['title'];
  String body = data['notification']['body'];

  // Создаем уведомление
  AwesomeNotifications().createNotification(
    content: NotificationContent(
      channelKey: 'basic_channel',
      title: title,
      body: body,
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // Ваше приложение
    );
  }
}
```

### Что важно учесть:
1. **Проверка данных**: Убедитесь, что структура данных, которую вы получаете, соответствует вашему ожиданию.

2. **Permissions**: Убедитесь, что ваше приложение имеет необходимые разрешения для отображения уведомлений.

3. **Планирование уведомлений**: Если вам нужно, чтобы уведомления приходили после выполнения какого-то действия в приложении, вы также можете рассмотреть возможность отправки уведомлений через API или встроенные функции приложения.

Таким образом, вы можете обрабатывать входящие уведомления и при активном состоянии приложения, создавая их вручную с помощью `awesome_notifications`.
flutter_local_notifications
Похожие вопросы