FCM обрабатывает уведомления IOS, когда приложение находится на переднем плане, чего я не хочу

# #firebase #flutter #firebase-cloud-messaging #flutter-local-notification

Вопрос:

Я использую fcm и local_notifications для обработки push-уведомлений в своем проекте Flutter.

Отправка уведомлений с использованием этой полезной нагрузки:

 {
  token: body.token,
  notification = {
      title: body.data.title,
      body: body.data.body,
  },
  data: {
      data: JSON.stringify(body.data),
  }
}
 

Поэтому, когда приходит уведомление

при завершении работы приложения: Уведомление отлично отображается для обоих приложений(ios — android)

в фоновом режиме приложения: Уведомление отлично отображается для обоих приложений(ios — android)

на переднем плане приложения:

приложение для Android: уведомление приходит как уведомление о данных, fcm ничего не предупреждает, как я этого хочу.

приложение ios: когда приходит уведомление, fcm отображает предупреждение, которое я не хочу. А также одновременно отображаются local_notifications.

Моя проблема в том, что fcm обрабатывает уведомления переднего плана в приложении ios. Когда это работает таким образом, я не могу отключить уведомление, которое не должно отображаться на переднем плане.

pubspec.yaml:

 firebase_messaging: ^10.0.4
flutter_local_notifications: ^8.1.1 1
 

параметры уведомления о переднем плане firebase:

 await instance.setForegroundNotificationPresentationOptions(alert: true, badge: true, sound: true);
 

Когда я удаляю параметры уведомлений переднего плана firebase или устанавливаю все параметры false, local_notifications также не может отображать уведомления.

параметры уведомлений local_notifications на переднем плане:

 instance.resolvePlatformSpecificImplementation<IOSFlutterLocalNotificationsPlugin>()?.requestPermissions(
          alert: true,
          badge: true,
          sound: true,
        );
 

Спасибо.

Ответ №1:

Я нашел решение: это было слишком очевидно 😀

 await instance.setForegroundNotificationPresentationOptions(alert: false, badge: true, sound: true);
 

параметр alert должен быть равен false, если вы не хотите, чтобы FCM обрабатывал предупреждения переднего плана.