当用户点击通过 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 端对接收负载是否有任何限制?如果是这样,是否有其他方法可以实现相同的功能?任何见解或建议将不胜感激。
您能否分享一下您使用 FirebaseMessaging.instance.getInitialMessage().then((message) {}) 和重定向屏幕的代码。