【问题标题】:Firebase -can Database.database().reference(withPath: ".info/connected") substitute for Ashley Mills ReachabilityFirebase -can Database.database().reference(withPath: ".info/connected") 替代 Ashley Mills 可达性
【发布时间】:2019-05-22 20:07:10
【问题描述】:

我的情况是插入了带有 wifi 的路由器,但路由器没有连接到互联网(没有 wifi)。我当时使用的任何可达性等级都认为它已连接,因为 wifi 可用,但无法确定 wifi 本身无法连接。

我现在使用Ashley Mills Reachability,它工作正常,因为它可以通过 ping 主机名来判断我是否连接到互联网。

let reachability = Reachability(hostname: "www.google.com")

reachability.whenReachable = { (reachability) in

    // connection is fine remove no connection alert if it's on screen
}
reachability.whenUnreachable = { (reachability) in

    // can't ping Google so alert no connection
}

Firebase 有类似的功能:

let connectedRef = Database.database().reference(withPath: ".info/connected")
connectedRef.observe(.value, with: { (connected) in

    if let boolean = connected.value as? Bool, boolean == true {

          // connection is fine remove no connection alert if it's on screen
     else {

          // can't ping Firebase so alert no connection
     }
})

问题是上述 Firebase 功能能否判断我的 wifi 是否开启(路由器已插入)但 wifi 本身没有像 AshleyMills 那样连接到互联网(没有 wifi)?

【问题讨论】:

    标签: ios swift firebase reachability


    【解决方案1】:

    真的迟到了,但我可以确认 Firebase 功能确实可以正常工作。它检查与 Firebase 数据库的连接。因此,如果您的 wifi 已打开但没有互联网,那么 Firebase 会说没有互联网。

    这非常简单。您正在测试与 Firebase 的连接。如果它无法连接到 Firebase,那么是否有 wifi 或手机数据或其他任何东西都没有关系。如果它无法到达它,它就无法到达它,它会告诉你没有连接。

    希望将来能对某人有所帮助。哦,我已经在我的生产应用程序中使用此代码一年多了。

    【讨论】:

    • 补充说明。我注意到".info/connected" 代码不会立即触发,就像 Ashley Mills 的“可达性”代码一样。而是有延迟。我找不到支持这一点的 Swift 文档,但 Android 文档说:在 Android 上,Firebase 自动管理连接状态以减少带宽和电池使用量...Firebase 在 60 秒不活动后关闭连接。从我的测试来看,一旦互联网连接在代码触发之前丢失,似乎会有大约 60 秒的延迟。仅供参考。
    • 您好,我忙了一整天,无法回复。感谢你的回答!我发现另一篇帖子说,FB 有某种方式不起作用。我必须试着记住。对于普通的日常用户来说,这似乎不是您需要担心的任何事情。 Ashley Mills 的工作非常好,但需要设置很多,fb 是 1-2-3。 Apple 也有 NWConnection 但我还没有尝试过。看这篇博文,看起来很简单agnosticdev.com/blog-entry/swift-networking/…
    • 我发现 Ashley Mills 真的很复杂,而且出奇地笨重。我认为简单的连接检查会更优雅。苹果自己的代码也很笨拙。我查看了 NWConnection,但它适用于 iOS 12 及更高版本,而且我有需要 iOS 10 的应用程序,所以也没有了。我想我喜欢 FB 代码的简单性,我还没有发现问题。
    • 如果您能找到".info/connected" 代码的潜在问题,我想了解一下。我不希望将来有问题。
    • 哈哈,是的,弗兰克就是那个家伙!您的需求是具体的。即使没有连接到数据库,我也需要我的应用程序响应所有情况。例如,路由器已插入但未连接到互联网。应用程序仍会认为它具有互联网连接。它发生在以前,我被难住了,直到有人向我解释。一旦没有连接,我希望我的用户立即知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多