Firebase:即使应用退出,也要监听 ChildEventListener

Posted

技术标签:

【中文标题】Firebase:即使应用退出,也要监听 ChildEventListener【英文标题】:Firebase: Listen ChildEventListener even if app exits 【发布时间】:2017-01-09 13:14:19 【问题描述】:

我正在开发一个 iOS 应用程序,并希望使用 firebase 实时数据库实现推送通知等行为。

如果我的应用正在监听某个 firebase 节点,我会向用户发送本地推送通知,以防该节点被更新。

问题是,如果应用程序没有运行,即用户已经杀死它,我的应用程序会继续侦听该特定节点吗? 我想,在 android 中,我们已经支持这样的方式,如此链接 (Link) 中所述。

我们能否在 ios 中实现相同的行为。如果不是,还有什么替代方案?

谢谢

更新

1- 没有什么比在 iOS 应用程序中本地触发推送通知更好的了。我想实现远程通知的行为,但这是做不到的。

2-就监听某些事件而言,当应用程序不在前台或后台时无法完成。

【问题讨论】:

【参考方案1】:

如果 iOS 应用程序被终止/不在内存中,您将无能为力。

但是,如果应用程序在后台并且存在于内存中,您可以执行一些任务。 在这种情况下,您可以使用background fetch request。

在 Android 中,有 Services 即使在应用程序被终止时也会运行。但是在 iOS 上,没有这样的东西。

您可以在根视图控制器中添加Firebase 观察者,并实现background fetch request 以在应用处于后台时继续观察数据。

【讨论】:

【参考方案2】:

当您的应用程序被杀死时,侦听器会断开连接。

在这种状态下向您的应用发送消息的典型方式是使用推送通知,在 Firebase 中该通知映射到 Firebase Cloud Messaging。

这就是为什么您会经常看到 Firebase 数据库和 Firebase 云消息传递 (FCM) 一起使用的原因:数据库用于在用户打开应用程序时发送消息,而 FCM 用于在以下情况下发送消息应用未激活。

【讨论】:

以上是关于Firebase:即使应用退出,也要监听 ChildEventListener的主要内容,如果未能解决你的问题,请参考以下文章

在 Firebase 中退出应用程序后如何保持用户会话

我们可以在 ios serviceworker 上运行 firebase 实时监听吗?

Firebase 事件监听器从未触发(iOS 应用)

从flutter应用程序到firebase的简单发布请求的最佳方法是啥?

在 Firebase 控制台上检测帐户禁用

即使应用程序被杀死,也要在特定时间调用方法