我处于一种情况,其中插入了带有wifi的路由器,但路由器未连接到互联网(没有wifi)。当时我使用的任何可达性类都认为它已连接,因为可以使用wifi,但它无法确定wifi本身无法获得连接。
我现在使用Ashley Mills Reachability,它可以正常工作,因为它可以通过ping主机名来告诉我是否已连接到Internet。
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)?
答案 0 :(得分:0)
聚会真的很晚,但是我可以确认Firebase功能确实可以正常工作。它检查与Firebase数据库的连接。因此,如果您的wifi可用但没有互联网,则Firebase会说没有互联网。
非常简单。您正在测试与Firebase的连接。如果无法到达Firebase,则没有wifi或手机数据或其他任何信息都没关系。如果无法达到,就无法达到,它会告诉您没有连接。
希望对以后的人有所帮助。哦,我已经在我的生产应用程序中使用了此代码一年多了。