首页 > 解决方案 > 后台 Swift 中的 Firebase 侦听器

问题描述

我正在尝试收听 Firebase 的回调 -

let ref = Database.database().reference()
ref.child(key).observe(.value) { (snapshot) in
            
   print("snapshot")
}

每次我更新给定key节点内的某些值时都会调用此方法。

不幸的是,当应用程序在后台时,它没有被调用。我知道后台获取,但我不想获取我想等待回调,回调会来,有时会在 1 分钟后,有时会在 10 分钟后(通过后台获取,我需要等待操作系统决定现在是取货的好时机)

如何在后台保持活力以收听 Firebase 回调?

编辑:

我将详细解释我的用例 - 每次数据库节点更改时,我都需要向用户发送本地通知。但是当应用程序在后台时不会调用侦听器,因此我无法调用本地通知。

我知道我可以使用推送通知,但我不想对我的数据库进行这些更改,我目前不需要用户或设备 ID 或类似的东西,我想保持这种方式。

已编辑

更多关于用例的信息——我在一个长回合制游戏中有 4 名玩家。在播放器 1 播放时,播放器 4 可能不会留在应用程序中,因为它可能需要一些时间(从 1 到 30 分钟)。我想在轮到他时通知玩家 4。每个玩家turn每次完成他的回合时都会设置一个值,而其他玩家正在监听该值的变化。

在 android 上,即使在后台,我们也会一直监听这些变化,当turn发生变化时,监听器会收到回调,并且从回调中,我们通过本地通知通知用户“轮到你了”。我想在 iOS 上做同样的事情。

标签: iosswiftfirebasebackground

解决方案


推荐阅读