Internet连接状态可快速访问

时间:2018-05-28 17:21:24

标签: ios swift connection reachability reachability-swift

我有以下代码来确定是否存在互联网连接。这段代码工作正常。我怎么知道我是否突然失去连接

  var reachability:Reachability?
  reachability = Reachability()
  self.reachability  = Reachability.init()
    if((self.reachability!.connection) != .none)
    {
        print("Internet available")
    }

可达性类是否具有报告连接是否中断的功能。如果无法通过可达性处理该问题,那么另一个选项

2 个答案:

答案 0 :(得分:2)

在AppDelegate / Vc

中声明
@objc func reachabilityChanged(note: Notification) {

   let reachability = note.object as! Reachability

    switch reachability.connection {
     case .wifi:
         print("Reachable via WiFi")
     case .cellular:
         print("Reachable via Cellular")
     case .none:
         print("Network not reachable")
    }
}

//

当状态改变时,此方法称为

reachability.stopNotifier()
NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: reachability)

//

避免崩溃不要忘记取消注册

clearstatcache()

答案 1 :(得分:1)

对于 iOS12+,我会使用 NWPathMonitor,它使监控网络变化变得非常容易:

import Network

let monitor = NWPathMonitor()

monitor.pathUpdateHandler = { path in
    if path.status != .satisfied {
        // Lost connection, do your thing here
    }
}
monitor.start(queue: DispatchQueue(label: "network_monitor"))

完成监控后:

monitor.cancel()