即使 Flutter 应用程序在后台,如何自动响应 Firebase Document Stream 更新? [关闭]

Posted

技术标签:

【中文标题】即使 Flutter 应用程序在后台,如何自动响应 Firebase Document Stream 更新? [关闭]【英文标题】:How to automatically react to a Firebase Document Stream update even when Flutter app is in the background? [closed] 【发布时间】:2021-03-01 16:20:58 【问题描述】:

我正在构建一个使用 Firebase 和 Agora 的视频通话颤振应用程序(android + ios)。在应用程序中设置了一个 StreamBuilder,它对 Firestore 流开放 - callCollection.doc(uid).snapshots();

当用户在应用程序中进行呼叫时,应用程序中的流构建器会按预期做出反应(打开一个拾取屏幕)但是当应用程序在后台(未打开或屏幕是离开)?即使应用程序在收到更新后自动启动也是可接受的反应(呼叫的接听屏幕仍会出现)。

screenshot of streambuilder

我也启用了 Firebase Cloud Messaging 以接收推送通知,但我不确定如何使用它们来触发应用程序自动打开(无需用户点击通知)。

感谢任何花时间帮助我或为我指明正确方向的人!

【问题讨论】:

您可能想从 FCM 的文档开始学习如何使用它。您将需要一个后端来将消息传递到您的应用程序。 firebase.flutter.dev/docs/messaging/overview 史蒂文森先生您好。我查看了 FCM 文档,实际上从您的 Firecast 视频中学习了使用 Firebase Cloud Functions。目前我没有使用服务器发送消息,而是使用应用程序内的 POST 请求。通知正确到达,但希望我的应用程序能够在呼叫到达时做出更多反应(Firestore 文档显示,用户的 uid 出现在流中),而不仅仅是通知。 嗨@JawadAzizKhan,我面临着类似的问题。你找到解决办法了吗?您是否设法让应用在来电时做出更多反应(即振动或播放铃声?) 【参考方案1】:

在推送通知中,将数据添加为有效负载并发送通知。在应用程序中,您应该设置处理的部分,收到通知时会发生什么。您可以访问数据

如您所见,Firebase 云消息传递包有一个名为onLaunchonResume 的方法。

    OnLaunch 会在您的应用以新的生命周期开始时处理该部分。 onResume 会在您的应用处于后台并移至前台时发挥作用。

您可以通过 message 参数访问您从通知中收到的有效负载信息。现在您所要做的就是将必要的数据作为道具传递给您调用屏幕。

参考:https://www.filledstacks.com/post/push-notifications-in-flutter-using-firebase/

【讨论】:

谢谢。我会尝试一下。但是有没有办法打开应用程序或类似的东西而不需要用户点击通知?

以上是关于即使 Flutter 应用程序在后台,如何自动响应 Firebase Document Stream 更新? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Flutter 让后台应用每天下午 2 点打开一个对话框?

Flutter:从后台服务自动恢复应用程序

Flutter开源项目 - 响应式后台管理面板界面

Flutter 本地通知 - 当应用程序在后台运行时,ZonedSchedule 通知不起作用

即使应用程序未在后台运行,VoIP 推送通知也会自动打开应用程序,这在 iOS 中是不是可行?

即使我的应用程序关闭,也会在后台运行 dart 代码