android - flutter + FCM : onBackgroundMessage vs onMessageOpenedApp

标签 android ios flutter firebase firebase-cloud-messaging

最近我一直致力于将 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:

  1. (...)
  2. 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/

相关文章:

flutter - 如何将Future转换为ListView的流

flutter - 监听 flutter(桌面)应用程序外部的按键

java - 如何在 Android WebView 中存储 cookie?

android - 任何已发送短信的接收者?

android - fragment 警报框出现问题

ios - 使 UIPickerView 依赖于选定的行(Swift)

php - 带参数的 Swift PHP 文件上传

android - 应用程序注册

PHP 重定向 - (SNI) 错误定向请求客户端需要一个新的连接 - 主机与服务器名称指示不匹配

initState 方法中的 Flutter showDialog(context)