根据通知数据打开 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
全局状态中是否有任何新消息。如果有你可以路由到一个页面来显示通知,或者让用户登录然后路由到通知页面。
如何使用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
全局状态中是否有任何新消息。如果有你可以路由到一个页面来显示通知,或者让用户登录然后路由到通知页面。