firebase - 根据通知数据打开 Flutter 应用?
问题描述
如何使用基于通知数据打开颤振应用程序FirebaseMessaging
?
因此,当我点击通知(通过 接收Firebase Messaging
)时,消息处理程序应该评估数据并基于它们打开应用程序。目前是asynchronous
,这意味着应用程序启动并且通知处理程序继续工作。
重要的是要知道,Navigator.push
不能使用,因为有一个重要的应用程序设置屏幕,它会在应用程序启动时检查身份验证状态等。如何解决这个问题?
解决方案
当您从设备的通知中心点击通知时,操作系统将启动该应用程序,当然前提是您已按照说明onLaunch
正确设置 Firebase 消息传递或onMessage
函数将被调用。
现在,由于 Firebase 消息传递尽可能早地配置,通常在main
Flutter 应用程序的条目中,您需要先将通知存储在某处。这可以是在任何使用它之前创建的全局状态对象。
final notifications = <NotificationData>[]; // globally accessible (i.e. via Provider)
然后在消息的处理程序中......
NotificationData onMessage(Map<String, dynamic> data) {
notifications.add(NotificationData.fromJson(data));
}
Flutter 应用程序将启动并MaterialApp
构建。此时,您可以有一个加载屏幕来检查用户是否已通过身份验证或是否有任何新消息处于notifications
全局状态。如果有,您可以路由到页面以显示通知,或者让用户登录然后路由到通知页面。
推荐阅读
- node.js - Heroku REST API 不工作但在本地工作
- excel - 如何在不下拉单元格的情况下输入大量数据?
- r - R ggplot如何手动更改图例名称和颜色
- google-apps-script - 如何在谷歌应用程序脚本中的表单项中获取图像
- azure-devops - 在 Azure Pipeline 中的何处添加 SonarQube bade
- sql - Postgresql LEFT JOIN 返回比预期更多的结果
- javascript - Vue路由器beforeEach:陷入循环并且无法加载登录模板
- python - 替换方法替换相似字符我如何使它替换单个特定字符
- kubernetes - 日志文件在使用 Containerd 运行时的 K8s 集群中的什么位置?
- excel - 切割库存问题的工作流程是什么?