3

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

  • 当 WiFi 已连接且互联网已开启时,路由器上的黄灯会亮起
  • 当 WiFi 已连接且互联网已关闭时,路由器上的红灯会亮起

那么是否可以区分第二种情况,还是与无法访问互联网时相同?

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

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

它基本上只有一个文件

相关代码——

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")
}

wheresetStatusIcon()根据颜色设置状态图标

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

4

1 回答 1

0

我找到了解决方案。

正如奥吉建议的那样,它不可能通过可达性来做到这一点,因为它只是检查 WiFi 或蜂窝网络是否可达。

所以我不得不ping一个网站来检查它是否在线。

如果我从它那里得到 200 响应,则它已连接。

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

我不知道如何正确 Ping,所以我问了另一个问题,我得到了答案

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

于 2018-09-26T09:52:27.167 回答