iOS12 以前,如果想判斷網絡狀態,我們需要引入一段蘋果官方提供的代碼,類名叫做Reachability。這么普通的功能竟然不是庫自帶的。好在蘋果在iOS12 推出了 NWPathMonitor,能更加方便細致地監控網絡狀態了。
在網上看到了一篇好文章,
https://learnappmaking.com/nwpathmonitor-internet-connectivity/
我對其進行了翻譯和總結
首先,需要引入 Network 庫,
之后聲明一個實例
let monitor = NWPathMonitor()
上面這段代碼表示監聽所有網絡類型的狀態,如果需要針對某一種網絡,可以使用
let monitor = NWPathMonitor(requiredInterfaceType: .wifi)
其實主要使用的就2種,.wifi 和 .cellular
之后就可以使用以下代碼判斷當前網絡狀態:
if monitor.currentPath.status == .satisfied {
//網絡可達
}
還可以判斷出是否正在使用某種網絡
monitor.currentPath.usesInterfaceType(.wifi)
如果需要實時監聽網絡狀態,還需要使用以下代碼,並且要注意monitor的生命周期,不要被提前釋放了。
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
print("Yay! We have internet!")
}
}
let queue = DispatchQueue.global(qos: .background)
monitor.start(queue: queue)