【问题标题】:Firebase database query not returning when offlineFirebase 数据库查询在离线时不返回
【发布时间】:2017-07-24 07:08:24
【问题描述】:

我正在尝试在 firebase 数据库上运行查询,如果用户离线,我想向用户显示一个弹出窗口,提示他们重试。但是,离线时查询不会返回。

databaseRef.queryEqual(toValue: "someValue").observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in
    print(snapshot) //this is never called when user is offline
}) { (error) in
    print(error)    //neither is this
}

运行此查询并检测用户是否离线的最佳策略是什么?

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    由于数据库客户端没有连接到它的后端并且它不知道缓存中的位置,它不能调用你的回调。

    您可以通过观察.info/connected 来检测 Firebase 客户端是否连接到其后端。请参阅Firebase documentation for an example of detecting connection state。

    【讨论】:

    • 谢谢普夫!您会推荐什么作为最佳(最安全)方法。 1)就像在您的回答中一样,列出firebase客户端是否已连接并且如果未连接则不允许查询,或者2)尝试查询,如果查询在X秒内没有返回,那么认为它失败并删除观察者?
    • 除非我需要基于时间的东西,否则我永远不会使用超时。这不是这里的情况。如果该位置是全新的并在客户端中创建,请考虑通过调用setValue(nil) 来启动该位置。这样客户就知道没有价值并且会解雇。我最近在这里回答了一个非常相似的问题:stackoverflow.com/questions/42430992/…
    猜你喜欢
    • 2018-05-30
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多