Einführung

NWPathMonitor ist eine Klasse aus dem Network-Framework, die den Netzwerkstatus beobachtet und das Netzwerk-Interface überwacht. Sie ist ab iOS 12 verfügbar.

import Network

Um Callbacks zu erhalten, muss man die NWPathMonitor-Instanz festhalten (retainen).

class NetworkMonitorViewController: ViewController {
    let monitor = NWPathMonitor()
}

Mit requiredInterface lässt sich gezielt ein bestimmtes Netzwerk-Interface beobachten.

let wifiMonitor = NWPathMonitor(requiredInterfaceType: .wifi)

Hier ist die Liste der Interfaces, die NWPathMonitor unterstützt.

https://developer.apple.com/documentation/network/nwinterface/interfacetype

Netzwerkänderungen erkennen

monitor.pathUpdateHandler = { path in
    if path.status == .satisfied {
        // Connected
    }
}

Beobachtung starten

Eine Background-Queue erstellen und an start() übergeben.

let queue = DispatchQueue.global(qos: .background)
monitor.start(queue: queue)

Das war’s schon. Simpel, oder?

Was ist eigentlich NWPath?

NWPath enthält Informationen wie die verfügbaren Interfaces oder ob IPv6 bzw. IPv4 genutzt wird.

Man erhält ihn über currentPath.

monitor.currentPath

Fazit

Ich habe NWPathMonitor vorgestellt, um zu zeigen, mit wie wenig und wie schlichtem Code sich damit Netzwerkänderungen erkennen lassen.

NWPathMonitor ist

  • ab iOS 12 verfügbar
  • einfach zu benutzen
  • ein vollwertiger Ersatz für Reachability