是否可以使用可达性来检查WiFi是否已连接但Swift中没有互联网连接?

时间:2018-09-25 15:39:09

标签: ios swift macos cocoa reachability-swift

我不知道这是否可行,但这是我的问题-

  • 当WiFi已连接且Internet已开启时,黄灯在路由器上发光
  • 连接WiFi且Internet 关闭后,红灯在路由器上发光

那么可以区分第二种情况还是与无法访问Internet的情况相同?

我正在使用https://github.com/ashleymills/Reachability.swift

可以找到完整的代码https://github.com/deadcoder0904/net-alert

基本上是one file

相关代码-

let reachability = Reachability()!

reachability.whenReachable = { reachability in
    if reachability.connection == .wifi {
            print("Reachable via WiFi")
            self.setStatusIcon(color: "green")
    } else {
            print("Reachable via Cellular")
            self.setStatusIcon(color: "yellow")
    }
}

reachability.whenUnreachable = { _ in
    print("Not reachable")
    self.setStatusIcon(color: "red")
}

do {
    try reachability.startNotifier()
} catch {
    print("Unable to start notifier")
    self.setStatusIcon(color: "yellow")
}

其中setStatusIcon()根据颜色设置状态图标

我想知道何时无法访问互联网,但在Swift中连接了WiFi吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

正如Augie所建议的那样,由于仅检查WiFi或Cellular是否可访问,因此无法实现Reachability。

因此,我不得不ping一个网站以检查它是否在线。

如果我收到200响应,则表明它已连接。

但是,如果我没有获得200,那么即使已连接WiFi,也没有互联网。

我不知道如何正确Ping,所以我问another question我在哪里the answer

完整代码可在https://github.com/deadcoder0904/net-alert

中找到