根据通知数据打开 Flutter 应用程序?

Open Flutter app based on notification data?

如何使用FirebaseMessaging打开基于通知数据的flutter应用?

因此,当我点击通知(通过 Firebase Messaging 收到)时,消息处理程序应评估数据并根据它们打开应用程序。目前它是 asynchronous,这意味着应用程序启动并且通知处理程序继续工作。

重要的是要知道,Navigator.push 不能使用,因为有一个重要的应用程序设置屏幕,它会在应用程序启动时检查授权状态等。如何解决这个问题?

当您点击来自设备通知中心的通知时,操作系统将启动该应用程序,前提是您已根据 instructions onLaunch 或 [=13 正确设置 Firebase 消息传递=] 函数将被调用。

现在,由于 firebase 消息配置得尽可能早,通常在 flutter 应用程序的 main 条目中,您需要先将通知存储在某个地方。这可以是在使用它之前创建的全局状态对象。

final notifications = <NotificationData>[]; // globally accessible (i.e. via Provider)

然后在消息的处理程序中...

NotificationData onMessage(Map<String, dynamic> data) {
   notifications.add(NotificationData.fromJson(data));
}

Flutter 应用程序将启动并构建 MaterialApp。此时,您可以有一个加载屏幕来检查用户是否已通过身份验证或 notifications 全局状态中是否有任何新消息。如果有你可以路由到一个页面来显示通知,或者让用户登录然后路由到通知页面。