NWPathMonitor: Was es ist, Netzwerküberwachung und Arbeit in iOS

Autor: IT Sectr Veröffentlicht: 2026-03-10 Lesezeit: 9 Min.

NWPathMonitor ist eine Klasse aus dem Network-Framework in iOS und macOS zur Überwachung des Zustands des Netzwerkpfads eines Geräts. Laut Apple Developer Documentation (2025) ermöglicht NWPathMonitor der Anwendung, die Netzwerkverfügbarkeit zu verfolgen, den Schnittstellentyp zu bestimmen und auf Verbindungsänderungen zu reagieren. NWPathMonitor bietet Informationen über den Verbindungstyp, Datenkosten und Internetverfügbarkeit über einen praktischen Callback mit NWPath.

Wichtige Punkte

  • NWPathMonitor — eine Klasse des Network-Frameworks zur asynchronen Überwachung des Netzwerkpfads in iOS und macOS.
  • NWPath enthält Informationen über Netzwerkverfügbarkeit, Schnittstellentyp (Wi-Fi, Mobilfunkdaten, Ethernet) und Kostenstatus.
  • Die start-Methode startet die Überwachung auf der angegebenen Dispatch Queue, die cancel-Methode stoppt sie.
  • Die pathUpdateHandler-Eigenschaft — ein Closure, das bei jeder Änderung des Netzwerkpfadstatus aufgerufen wird.
  • NWPathMonitor unterstützt die Filterung nach erforderlichem Schnittstellentyp über den Parameter requiredInterfaceType.

Was ist NWPathMonitor?

NWPathMonitor ist eine Klasse aus dem Network-Framework, die von Apple in iOS 12 und macOS 10.14 Mojave eingeführt wurde. Sie bietet eine moderne API zur Verfolgung von Änderungen im Netzwerkpfad eines Geräts — der Kombination von Netzwerkschnittstellen, durch die der Datenverkehr der Anwendung fließt.

Vor iOS 12 wurde die Reachability-Bibliothek verwendet, die auf dem C-basierten SystemConfiguration-Framework aufbaute. NWPathMonitor ist eine native Swift-Alternative mit einer reichhaltigeren API, Unterstützung für moderne Verbindungstypen (VPN, Multipath, LTE, 5G) und integrierter GCD-Integration.

Der Hauptunterschied zwischen NWPathMonitor und Reachability — das NWPath-Objekt bietet nicht nur einen binären Status „verfügbar/nicht verfügbar“, sondern ein vollständiges Bild des Pfads: verwendete Schnittstellen, deren Priorität, Kosten, Roaming-Status und Proxy- und VPN-Fähigkeiten. Der Entwickler erhält umfassende Informationen für Entscheidungen über Netzwerkanfragen.

Geschichte des Network-Frameworks

Das Network-Framework entstand als moderner Ersatz für niedrige C-APIs — CFStream und BSD Sockets. Es bietet eine einheitliche Schnittstelle für die Netzwerkkommunikation auf allen Apple-Plattformen, einschließlich watchOS und tvOS. NWPathMonitor ist Teil dieses Frameworks neben NWConnection, NWListener und NWBrowser.

Das Network-Framework ist in Swift geschrieben und verwendet GCD für asynchrone Verarbeitung. Das bedeutet, dass NWPathMonitor-Callbacks auf der angegebenen Dispatch Queue ausgeführt werden und sich in die vorhandene Multithreading-Architektur der Anwendung integrieren, ohne manuelles Thread-Management.

Wie verwendet man NWPathMonitor in einer Anwendung

Die Verwendung von NWPathMonitor beginnt mit der Erstellung einer Klasseninstanz und der Konfiguration des pathUpdateHandler-Callbacks. Dann wird die start-Methode mit einer Dispatch Queue aufgerufen, in der der Closure ausgeführt wird. Die Überwachung wird durch die cancel-Methode gestoppt, die auch Ressourcen freigibt.

swift
import Network

class NetworkMonitor {
    private let monitor = NWPathMonitor()
    private let queue = DispatchQueue("monitor")

    func startMonitoring() {
        monitor.pathUpdateHandler = { path in
            if path.status == .satisfied {
                print("Netzwerk verfügbar")
            } else {
                print("Netzwerk nicht verfügbar")
            }
        }
        monitor.start(on: queue)
    }

    func stopMonitoring() {
        monitor.cancel()
    }
}

Arbeiten mit dem Schnittstellentyp

NWPathMonitor kann so konfiguriert werden, dass nur ein bestimmter Schnittstellentyp überwacht wird. Verwenden Sie den Initialisierer NWPathMonitor(requiredInterfaceType:) mit dem Parameter NWInterface.InterfaceType — .wifi, .cellular, .wiredEthernet oder .loopback. Wenn kein Typ angegeben ist, deckt die Überwachung alle Schnittstellen ab.

Praktisches Beispiel: Eine Streaming-Anwendung kann nur Wi-Fi überwachen und den Benutzer warnen, wenn auf Mobilfunkdaten umgeschaltet wird. Die Überprüfung von isConstrained und isExpensive in NWPath ermöglicht die Feststellung, ob die aktuelle Verbindung gebührenpflichtig oder geschwindigkeitsbegrenzt ist.

Lebenszyklus der Überwachung

Die Überwachung sollte beim Start der Anwendung oder beim Wechsel in den Vordergrund beginnen und beim Wechsel in den Hintergrund gestoppt werden. Es wird empfohlen, eine einzige NWPathMonitor-Instanz für die gesamte Anwendung (Singleton) zu erstellen und sie über ein Protokoll oder eine Dienstschicht in verschiedenen Modulen zu verwenden.

NWPath Eigenschaften und Fähigkeiten

NWPath ist ein Objekt, das an pathUpdateHandler übergeben wird und den aktuellen Zustand des Netzwerkpfads beschreibt. Es enthält fünf Schlüsseleigenschaften, die die meisten Netzwerküberwachungsszenarien abdecken. NWPath.Status — eine Aufzählung mit drei Zuständen: satisfied (verfügbar), unsatisfied (nicht verfügbar) und requiresConnection (benötigt Verbindung).

EigenschaftTypBeschreibung
statusNWPath.StatusAktueller Pfadstatus: satisfied, unsatisfied, requiresConnection
availableInterfaces[NWInterface]Liste aller verfügbaren Netzwerkschnittstellen
gateways[NWEndpoint]Liste der für das Routing verwendeten Gateways
isExpensiveBoolTrue, wenn die Verbindung gebührenpflichtig ist (Mobilfunkdaten, persönlicher Hotspot)
isConstrainedBoolTrue, wenn die Verbindung geschwindigkeitsbegrenzt ist (Low Data Mode)

Überprüfung von Kosten und Einschränkungen

Die Eigenschaft isExpensive ist ein kritisches Flag für Anwendungen, die mit großen Datenmengen arbeiten. Wenn isExpensive = true ist, sollte die Anwendung die Streaming-Qualität reduzieren, Update-Downloads verschieben oder den Benutzer warnen. isConstrained zeigt an, dass der Low Data Mode aktiviert ist.

Um die Internetverfügbarkeit (nicht nur das Netzwerk) zu überprüfen, verwenden Sie die Methode usesInterfaceType. Wenn das Gerät ohne Internet mit Wi-Fi verbunden ist — kann NWPath satisfied anzeigen, aber der tatsächliche Zugriff fehlt. In solchen Fällen ist eine zusätzliche Validierung über NWConnection erforderlich.

NWPathMonitor Implementierungsbeispiele

Betrachten wir eine erweiterte NWPathMonitor-Implementierung mit Kostenverwaltung, Schnittstellentypen und ViewModel-Benachrichtigung über einen Publisher. Das Beispiel verwendet das Combine-Framework für reaktive UI-Updates bei Änderungen des Netzwerkstatus.

swift
import Network
import Combine

final class NetworkManager: ObservableObject {
    static let shared = NetworkManager()
    @Published private(set) var isConnected = true
    @Published private(set) var isExpensive = false

    private let monitor = NWPathMonitor()
    private let queue = DispatchQueue("NetworkMonitor")

    private init() {
        monitor.pathUpdateHandler = { [weak self] path in
            DispatchQueue.main.async {
                self?.isConnected = path.status == .satisfied
                self?.isExpensive = path.isExpensive
            }
        }
        monitor.start(on: queue)
    }

    func checkInterface() -> NWInterface.InterfaceType {
        let path = monitor.currentPath
        if path.usesInterfaceType(.wifi) { return .wifi }
        if path.usesInterfaceType(.cellular) { return .cellular }
        return .other
    }
}

Behandlung von Netzwerkverlust mit verzögerter Aktion

Wenn eine Verbindung verloren geht, kann es erforderlich sein, nicht nur die UI zu benachrichtigen, sondern auch verzögerte Aktionen durchzuführen — zum Beispiel einen Anfrageentwurf für den späteren Versand zu speichern. Implementieren Sie eine Warteschlange für verzögerte Anfragen, die Operationen während des unsatisfied-Status sammelt und sendet, wenn satisfied wiederhergestellt ist.

Das ReachabilityManager mit Delegate-Muster ist ideal für diese Aufgabe: NWPathMonitor benachrichtigt den Manager, der Manager aktualisiert die Warteschlange und die UI. Wenn sich der Status auf satisfied ändert, wird die Warteschlange automatisch geleert und die UI erhält eine Anzeige der Verbindungswiederherstellung.

NWPathMonitor vs Reachability

Vor NWPathMonitor war die Standardlösung für die Netzwerküberwachung in iOS die Reachability-Bibliothek von Apple (Beispiel aus der Dokumentation), die auf SystemConfiguration aufbaute. Die Hauptunterschiede: Reachability arbeitet über SCNetworkReachability in C, unterstützt keine modernen Netzwerktypen und liefert nur eine binäre Verfügbarkeitsantwort.

NWPathMonitor behebt diese Einschränkungen: Es ist in Swift geschrieben, unterstützt VPN, Multipath, 5G und LTE, bietet detaillierte Informationen über jede Schnittstelle und arbeitet asynchron über GCD. Reachability wird weiterhin in Projekten mit minimaler iOS 11 und niedrigerer Unterstützung verwendet.

MerkmalNWPathMonitorReachability
MindestversioniOS 12iOS 2
SpracheSwift (Network)C (SystemConfiguration)
SchnittstellentypenWi-Fi, Cellular, Ethernet, VPNWi-Fi, WWAN (allgemein)
isExpensiveJaNein
AsynchronGCD (dispatch queue)RunLoop
Mehrere SchnittstellenJa (Multipath)Nein

Wann Reachability verwenden

Wenn Ihre Anwendung iOS 11 und niedriger unterstützt, bleibt Reachability die einzige Option. Für iOS 12+ Projekte wird empfohlen, NWPathMonitor direkt zu verwenden — es integriert sich besser mit modernem Swift-Code, Combine und SwiftUI.

Die Migration von Reachability zu NWPathMonitor ist einfach: Ersetzen Sie einfach SCNetworkReachability-Aufrufe durch NWPathMonitor, wobei Sie dieselbe Verarbeitungslogik beibehalten. Eine Abstraktionsschicht (NetworkMonitorProtocol) ermöglicht das Wechseln zwischen Implementierungen, ohne die Geschäftslogik der Anwendung zu ändern.

Häufig gestellte Fragen

Welche Mindestversion von iOS wird für NWPathMonitor benötigt?

NWPathMonitor ist verfügbar ab iOS 12.0, macOS 10.14, watchOS 5.0 und tvOS 12.0. Für Projekte, die ältere Versionen unterstützen, verwenden Sie Reachability aus SystemConfiguration oder Wrapper-Bibliotheken mit bedingter Kompilierung über #available.

Was ist der Unterschied zwischen NWPath.Status.satisfied und unsatisfied?

Satisfied bedeutet, dass Datenverkehr über mindestens eine Schnittstelle fließen kann. Unsatisfied — keine Schnittstelle ist verfügbar. Der Zustand requiresConnection — der Pfad muss eine Verbindung herstellen (z.B. VPN ist nicht verbunden), und Datenverkehr kann vorübergehend nicht passieren.

Wie bestimmt man den Netzwerktyp — Wi-Fi oder Mobilfunk?

Verwenden Sie die Methode usesInterfaceType auf NWPath: path.usesInterfaceType(.wifi) für Wi-Fi, path.usesInterfaceType(.cellular) für Mobilfunkdaten. Die Methode gibt true zurück, wenn der aktuelle Datenverkehr über den angegebenen Schnittstellentyp läuft.

Sollte ich NWPathMonitor beim Wechsel in den Hintergrund abbrechen?

Es wird empfohlen, die Überwachung im Hintergrund zu pausieren, um Akku zu sparen. Der Aufruf von monitor.cancel() in applicationDidEnterBackground und der Neustart von start in applicationWillEnterForeground reduzieren den Stromverbrauch. Verwenden Sie Background Task für kritische Vorgänge.

Wie behandelt man captive Portale mit NWPathMonitor?

NWPathMonitor kann auch bei einem captive Portal satisfied anzeigen. Um den tatsächlichen Internetzugriff zu bestimmen, führen Sie eine HTTP-Anfrage an einen vertrauenswürdigen Endpunkt über NWConnection durch. Wenn eine Weiterleitung erfolgt — ist das Portal aktiv und erfordert eine Autorisierung in einem WebView.

Zusammenfassung

  • NWPathMonitor — eine Klasse des Network-Frameworks zur Überwachung des Netzwerkpfads in iOS 12+ mit GCD- und Combine-Unterstützung.
  • NWPath enthält vollständige Informationen über die Verbindung: Status, Schnittstellentypen, Kosten, Einschränkungen und Gateways.
  • Die start-Methode startet die Überwachung auf der angegebenen Warteschlange, pathUpdateHandler erhält NWPath-Updates.
  • Die Eigenschaften isExpensive und isConstrained ermöglichen die Identifizierung gebührenpflichtiger und eingeschränkter Verbindungen.
  • NWPathMonitor hat Reachability für iOS 12+ ersetzt und bietet eine reichhaltigere Swift-API.
  • Filterung nach Schnittstellentyp wird über den Initialisierer mit dem Parameter requiredInterfaceType implementiert.
  • Für den Hintergrundbetrieb sollte die Überwachung beim Wechsel zwischen Vorder- und Hintergrund pausiert und wieder aufgenommen werden.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch