Облачные сообщения Flutter Firebase: для чего используется «onBackgroundMessage»?

# #firebase #flutter #dart #push-notification

Вопрос:

Я настроил свое приложение flutter с помощью push-уведомлений, но я понятия не имею, для чего используется следующий код:

   _initiateFcm() async {
      FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  }

  Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
    await Firebase.initializeApp();
    print('A bg message just showed up: ${message.messageId}');
  }
 

Я не нахожу примера, где он используется для чего-либо другого, кроме инициализации приложения firebase… что уже происходит в моем main() методе. Какова цель этого? Когда его следует использовать для чего?

У меня есть эти функции, где я фактически обрабатываю push-уведомления, которые получаю:

 FirebaseMessaging.onMessage.listen((RemoteMessage message) {});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {});
 

Но я onBackgroundMessage ни для чего его не использую…

В документации говорится:

   /// Set a message handler function which is called when the app is in the
  /// background or terminated.
  ///
  /// This provided handler must be a top-level function and cannot be
  /// anonymous otherwise an [ArgumentError] will be thrown.
 

Но никто не использует этот метод ни для чего, где бы я ни проверял…

Ответ №1:

 FirebaseMessaging.onBackgroundMessage()
 

Эта функция вызывается, когда ваши уведомления поступают, когда приложение не запущено (приложение находится в фоновом режиме).

Итак, если вы хотите что-то сделать при получении фонового уведомления, вы можете использовать эту функцию.

Вы можете использовать эту функцию для выполнения логики, такой как HTTP-запросы, операции ввода-вывода (обновление локального хранилища), взаимодействие с другими плагинами, когда вы получаете уведомление, пока приложение не запущено.

ПРИМЕЧАНИЕ: Невозможно обновить состояние приложения или выполнить какую-либо логику, влияющую на пользовательский интерфейс, с помощью этой функции (поскольку обработчик выполняется в своей собственной изоляции вне контекста ваших приложений).

Подробная информация