Фон приложения для push-уведомлений Flutter : firebase_messaging

# #flutter #dart #firebase-cloud-messaging #flutter-notification

Вопрос:

Я хочу отображать push-уведомление, когда мое приложение находится в фоновом режиме.
Я использую пакет flutter_local_notifications и пакет firebase_messaging.

Push-уведомления отлично работают с firebase_messaging и когда мое приложение находится в фоновом режиме.
Однако приведенный ниже метод :

  // The following handler is called, when App is in the background.
 FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);
 

не вызывается, если RemoteNotification объект передается через RemoteMessage :

 Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  print('message from background handler');
  print("Handling a background message: ${message.messageId}");
  
  // If this is null, then this handler method is called
  RemoteNotification remoteNotification = message.notification; 

  showNotificationFromData(message.data);
}
 

Поэтому я должен передать message.data объект, который является a Map<String, dynamic> .

Моя проблема в том, что я больше не получаю push-уведомления при вызове этого firebaseMessagingBackgroundHandler метода обработчика.

Поэтому я пытался использовать flutter_local_notification пакет для отображения push-уведомления, но, как говорится, он «локальный», поэтому он отлично работает на переднем плане, но, по-видимому, не в фоновом режиме (тот же код с теми же данными не отображается в фоновом режиме в качестве push-уведомления).

Вопрос :

Мне нужно вызвать firebaseMessagingBackgroundHandler обработчик для обработки событий в моем приложении. Так что я могу сделать, чтобы по-прежнему получать push-уведомления, когда мое приложение находится в фоновом режиме, пожалуйста ?

Спасибо

Ответ №1:

Хорошо, я нашел решение. Это должно было установить content_available значение True в коде на стороне сервера.

Чтобы заменить firebase_messaging.Notification элемент, нам нужно переопределить android apns настройки и.

Это выглядит так в python :

 apnsConfig = messaging.APNSConfig(
            payload=messaging.APNSPayload(
                aps=messaging.Aps(
                    content_available=True,
                )
            ),
     
        )
 

Сейчас я получаю push-уведомления и вызываю фоновый обработчик внутри кода dart.