Firebase -can Database.database().reference(withPath: ".info/connected") 替代 Ashley Mills 可
Posted
技术标签:
【中文标题】Firebase -can Database.database().reference(withPath: ".info/connected") 替代 Ashley Mills 可达性【英文标题】:Firebase -can Database.database().reference(withPath: ".info/connected") substitute for Ashley Mills Reachability 【发布时间】: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)?
【问题讨论】:
【参考方案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"
代码的潜在问题,我想了解一下。我不希望将来有问题。
哈哈,是的,弗兰克就是那个家伙!您的需求是具体的。即使没有连接到数据库,我也需要我的应用程序响应所有情况。例如,路由器已插入但未连接到互联网。应用程序仍会认为它具有互联网连接。它发生在以前,我被难住了,直到有人向我解释。一旦没有连接,我希望我的用户立即知道。以上是关于Firebase -can Database.database().reference(withPath: ".info/connected") 替代 Ashley Mills 可的主要内容,如果未能解决你的问题,请参考以下文章
Error:QSqlDatabase: QMYSQL driver not loaded (Qt+C++ 找不到mysql的驱动)
无法从“firebase.js”解析模块“firebase”:在项目中找不到 Firebase
VueJS + Firebase 使用 Firebase 绑定
无法解决:com.google.firebase:firebase-ml-vision:24.1.3;无法解决:com.google.firebase:firebase-core:20.0.2
没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()
如何修复 Firebase 9.0 导入错误? “尝试导入错误:‘firebase/app’不包含默认导出(导入为‘firebase’)。”