首页 > 解决方案 > 根据通知数据打开 Flutter 应用?

问题描述

如何使用基于通知数据打开颤振应用程序FirebaseMessaging

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

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

标签: firebaseflutternotificationsmessaging

解决方案


当您从设备的通知中心点击通知时,操作系统将启动该应用程序,当然前提是您已按照说明onLaunch正确设置 Firebase 消息传递或onMessage函数将被调用。

现在,由于 Firebase 消息传递尽可能早地配置,通常在mainFlutter 应用程序的条目中,您需要先将通知存储在某处。这可以是在任何使用它之前创建的全局状态对象。

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

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

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

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


推荐阅读