Flutter + FCM:onBackgroundMessage 与 onMessageOpenedApp

Bel*_*410 7 android ios firebase flutter firebase-cloud-messaging

最近我一直在致力于将 flutter 与 FCM 连接起来。在阅读firebase 文档时,我红色:

通过注册处理程序来处理后台消息onBackgroundMessage

,但后来阅读flutterfire 文档我发现:

firebase-messaging 包提供了两种方法来处理此交互:

  1. (...)
  2. onMessageOpenedApp:当应用程序从后台状态打开时发布 RemoteMessage 的 Stream。

据我了解,第一个功能是在应用程序处于后台时处理通知(无论用户是否与其交互),第二个功能是在应用程序处于后台时处理通知点击。如果这是错误的,请纠正我。

但如果我是对的,那么使用这两个函数不会导致冗余吗?onBackgroundMessage独立运行(作为单独的隔离),因此如果用户在应用程序关闭时点击通知,这两个功能都会被触发吗?

现在,我用来flutter_local_notifications保存未交互的通知(并且应用程序处于后台/终止),并在用户启动/恢复应用程序时检查它们。如果我的上述结论也是正确的,那么我应该检查内部onMessageOpenedApp是否已处理单击的通知onBackgroundMessage(并因此保存在本地存储中)?

请帮我澄清这件事。
谢谢。

小智 6

如果消息由 处理onBackgroundMessage,则不会导致出现通知(除非您手动执行此操作,例如通过flutter_local_notifications),因此它不会出现在 中onMessageOpenedApp

onMessageOpenedApp仅当应用程序位于后台(但未终止!)并且用户点击之前发送的通知时才调用(因此,由于当应用程序位于前台时,所有消息都会发送到onMessage,因此必须在应用程序位于后台时发送)。