Firebase 根据通知数据打开颤振应用程序?

Firebase 根据通知数据打开颤振应用程序?,firebase,flutter,notifications,messaging,Firebase,Flutter,Notifications,Messaging,如何使用FirebaseMessaging根据通知数据打开颤振应用程序 因此,当我点击一个通知(通过Firebase Messaging接收)时,消息处理程序应该评估数据并基于它们打开应用程序。此时它是异步的,这意味着应用程序启动,通知处理程序继续工作 重要的是要知道,Navigator.push不能使用,因为有一个重要的应用程序设置屏幕,它在应用程序启动时检查身份验证状态等。如何解决此问题?当您点击设备通知中心的通知时,操作系统将启动应用程序,当然前提是您已按照onLaunch或onMessa

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

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


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

当您点击设备通知中心的通知时,操作系统将启动应用程序,当然前提是您已按照
onLaunch
onMessage
功能正确设置Firebase消息

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

final notifications = <NotificationData>[]; // globally accessible (i.e. via Provider)
最终通知=[];//全球可访问(即通过提供商)
然后在消息的处理程序中

NotificationData onMessage(Map<String, dynamic> data) {
   notifications.add(NotificationData.fromJson(data));
}
NotificationData-onMessage(地图数据){
add(NotificationData.fromJson(data));
}

颤振应用程序将启动,
MaterialApp
将生成。此时,您可以有一个加载屏幕来检查用户是否已通过身份验证,或者在
通知
全局状态下是否有任何新消息。如果有,您可以发送到页面以显示通知,或者让用户登录,然后发送到通知页面。

谢谢。我也考虑过,但不确定处理速度是否足够快。因为我们不能排除设置屏幕比消息处理程序快。或者您对此有何看法?这就是为什么将消息数据存储在某个位置直到您准备好显示它可能是最好的。如果应用程序处于后台,这意味着用户将返回到他们所在的页面,你可以在应用程序恢复时监听,然后处理通知