当通知在终止状态下打开时,Firebase flutter instance.getInitialMessage() 返回 null (IOS)

问题描述 投票:0回答:1

当用户点击通过 Firebase Cloud Messaging 收到的推送通知时,我遇到了将用户重定向到使用 Flutter 开发的 iOS 应用程序中的特定屏幕的问题。这是场景:

在我的 Flutter iOS 应用程序中,推送通知是通过 Firebase Messaging 接收的。单击通知后,用户应被重定向到特定屏幕。这些通知的数据是使用 Firebase Legacy API 从 Node.js 服务器发送的。

以下是从 Node.js 服务器发送通知的代码片段:

const response = await fetch("https://fcm.googleapis.com/fcm/send", {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${server_key}`,
            },
          body: JSON.stringify({
            registration_ids: tokens,
            notification:{
              title:title,
              body:body
            },
            data:{
              // ...some data
            },
            content_available: true
          })
        })

应用程序终止时会出现问题:从

message
检索的
FirebaseMessaging.instance.getInitialMessage().then((message) {})
返回
null
。因此,我无法访问
message.data
,从而阻止用户重定向到特定屏幕。

我尝试将

getInitialMessage
函数放置在不同位置,例如
main.dart
bottom_navigation.dart
,但它始终返回 null。

但是,也有一些例外:偶尔,当应用程序在延迟一段时间后从通知打开时,会收到通知,并且重定向会按预期工作。但这种行为是不一致的。

我对这种行为感到困惑。当应用程序终止时,iOS 端对接收负载是否有任何限制?如果是这样,是否有其他方法可以实现相同的功能?任何见解或建议将不胜感激。

ios flutter firebase firebase-cloud-messaging
1个回答
0
投票

您能否分享一下您使用 FirebaseMessaging.instance.getInitialMessage().then((message) {}) 和重定向屏幕的代码。

© www.soinside.com 2019 - 2024. All rights reserved.