はじめに

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 の置き換えとして十分