Flutter Firebase 云消息传递:`onBackgroundMessage` 的用途是啥?

Posted

技术标签:

【中文标题】Flutter Firebase 云消息传递:`onBackgroundMessage` 的用途是啥?【英文标题】:Flutter Firebase Cloud Messaging: for what is the `onBackgroundMessage` used for?Flutter Firebase 云消息传递:`onBackgroundMessage` 的用途是什么? 【发布时间】:2021-09-06 16:04:42 【问题描述】:

我使用推送通知设置了我的颤振应用程序,但我不知道以下代码用于什么:

  _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() 方法中已经发生了什么。这样做的目的是什么?什么时候用?

我在实际处理收到的推送通知时拥有这些功能:

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 请求、IO 操作(更新本地存储)等逻辑,当您在应用未运行时收到通知时与其他插件通信。

注意:无法通过此函数更新应用程序状态或执行任何影响 UI 的逻辑(因为处理程序在应用程序上下文之外的自己的隔离中运行)。

更多info

【讨论】:

以上是关于Flutter Firebase 云消息传递:`onBackgroundMessage` 的用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Firebase 云消息传递的 Flutter 2.0:onMessage 未在 Android 上调用

用于 Flutter 的 Firebase 云消息传递 - 可选择处理后台消息错误

Flutter Firebase 云消息传递:`onBackgroundMessage` 的用途是啥?

将自定义数据从 Firebase 云消息传递控制台显示到 Flutter 应用程序?

如何在 Flutter 中删除 Firebase 云消息传递令牌

Flutter 和 FCM(Firebase 云消息传递)onMessage、onResume 和 onLaunch 在单击通知时未触发(包:firebase_messaging 7.0.0)