はじめに
NWPathMonitor は Network フレームワークのクラスで、ネットワークの状態を観測し、ネットワークインターフェースを監視できます。 iOS 12 以降で利用可能です。
import Network
コールバックを受け取るには、NWPathMonitor のインスタンスを保持しておく必要があります。
class NetworkMonitorViewController: ViewController {
let monitor = NWPathMonitor()
}
requiredInterface を使うと、特定のネットワークインターフェースだけを観測できます。
let wifiMonitor = NWPathMonitor(requiredInterfaceType: .wifi)
NWPathMonitor がサポートするインターフェースの一覧はこちらです。
https://developer.apple.com/documentation/network/nwinterface/interfacetype
ネットワークの変化を検知する
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
// Connected
}
}
観測を開始する
バックグラウンドのキューを作成し、start() に渡します。
let queue = DispatchQueue.global(qos: .background)
monitor.start(queue: queue)
これだけです。シンプルですよね?
ところで NWPath とは?
NWPath には、利用可能なインターフェースや、IPv6 か IPv4 かといった情報が含まれています。
currentPath から取得できます。
monitor.currentPath
まとめ
NWPathMonitor を使えば、これほど素直なコードでネットワークの変化を検知できる、ということを紹介しました。
NWPathMonitor は
- iOS 12 から利用可能
- 使い方がシンプル
- Reachability の置き換えとして十分