最近我一直致力于将 flutter 与 FCM 连接起来。 读书时firebase docs我红了:
Handle background messages by registering a
onBackgroundMessage
handler.
,但稍后阅读 flutterfire docs我发现:
The firebase-messaging package provides two ways to handle this interaction:
- (...)
onMessageOpenedApp
: A Stream which posts a RemoteMessage when the application is opened from a background state.
我明白,第一个功能是在应用程序处于后台时处理通知(无论用户是否与之交互),第二个功能是在应用程序处于后台时处理通知点击。 如果那是错误的,请纠正我。
但如果我是对的,那么同时使用这两个函数不会导致冗余吗? onBackgroundMessage
独立运行(作为单独的隔离),因此如果用户在应用关闭时点击通知,是否会触发这两个函数?
现在我使用 flutter_local_notifications
来保存未与之交互的通知(并且应用程序在后台/终止)并在用户启动/恢复应用程序时检查它们。如果我在上面的结论中也是正确的,那么我是否应该在 onMessageOpenedApp
中检查点击的通知是否已经由 onBackgroundMessage
处理(并因此保存在本地存储中)?
请帮我澄清一下。
谢谢。
最佳答案
如果消息由 onBackgroundMessage
处理,它不会导致通知出现(除非你手动这样做,例如通过 flutter_local_notifications
),所以它不会t 出现在 onMessageOpenedApp
中。
onMessageOpenedApp
仅在应用程序处于后台(但未终止!)并且用户点击之前发送的通知时调用(因此,因为当应用程序处于前台时,所有消息都发送到 onMessage
,它必须在应用程序处于后台时传递)。
关于android - flutter + FCM : onBackgroundMessage vs onMessageOpenedApp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72894846/