NWPathMonitor: nedir, ağ izleme ve iOS'ta çalışma

Yazar: IT Sectr Yayınlanma: 2026-03-10 Okuma süresi: 9 dk

NWPathMonitor, iOS ve macOS'taki Network çerçevesinde cihazın ağ yolunun durumunu izlemek için kullanılan bir sınıftır. Apple Developer Documentation (2025)'ye göre NWPathMonitor, uygulamanın ağ kullanılabilirliğini izlemesine, arabirim türünü belirlemesine ve bağlantı değişikliklerine yanıt vermesine olanak tanır. NWPathMonitor, NWPath ile kullanışlı bir geri çağrım aracılığıyla bağlantı türü, veri maliyetleri ve internet kullanılabilirliği hakkında bilgi sağlar.

Ana Noktalar

  • NWPathMonitor — iOS ve macOS'ta eşzamansız ağ yolu izleme için Network çerçevesinin bir sınıfı.
  • NWPath ağ kullanılabilirliği, arabirim türü (Wi-Fi, hücresel veri, Ethernet) ve maliyet durumu hakkında bilgi içerir.
  • start metodu belirtilen dispatch queue'de izlemeyi başlatır, cancel metodu durdurur.
  • pathUpdateHandler özelliği — ağ yolu durumundaki her değişiklikte çağrılan bir closure.
  • NWPathMonitor requiredInterfaceType parametresi aracılığıyla gerekli arabirim türüne göre filtrelemeyi destekler.

NWPathMonitor nedir?

NWPathMonitor, Apple tarafından iOS 12 ve macOS 10.14 Mojave'de tanıtılan Network çerçevesinin bir sınıfıdır. Cihazın ağ yolundaki değişiklikleri izlemek için modern bir API sağlar — uygulama trafiğinin geçtiği ağ arabirimlerinin birleşimi.

iOS 12'den önce, C tabanlı SystemConfiguration çerçevesi üzerine inşa edilmiş Reachability kütüphanesi ağ izleme için kullanılıyordu. NWPathMonitor, daha zengin bir API, modern bağlantı türleri (VPN, multipath, LTE, 5G) desteği ve yerleşik GCD entegrasyonu ile yerel bir Swift alternatifidir.

NWPathMonitor ile Reachability arasındaki temel fark — NWPath nesnesi yalnızca ikili bir “kullanılabilir/kullanılamaz” durumu değil, yolun tam bir resmini sağlar: kullanılan arabirimler, öncelikleri, maliyetler, dolaşım durumu ve proxy ve VPN yetenekleri. Geliştirici, ağ istekleri hakkında kararlar almak için kapsamlı bilgi elde eder.

Network çerçevesinin tarihçesi

Network çerçevesi, düşük seviyeli C API'lerinin — CFStream ve BSD Sockets modern bir yedeği olarak ortaya çıktı. watchOS ve tvOS dahil tüm Apple platformlarında ağ iletişimi için birleşik bir arabirim sağlar. NWPathMonitor, NWConnection, NWListener ve NWBrowser ile birlikte bu çerçevenin bir parçasıdır.

Network çerçevesi Swift ile yazılmıştır ve eşzamansız işlem için GCD kullanır. Bu, NWPathMonitor geri çağrımlarının belirtilen dispatch queue'de yürütüldüğü ve manuel iş parçacığı yönetimi olmadan uygulamanın mevcut çoklu iş parçacığı mimarisiyle entegre olduğu anlamına gelir.

Bir uygulamada NWPathMonitor nasıl kullanılır

NWPathMonitor kullanımı, bir sınıf örneği oluşturmak ve pathUpdateHandler geri çağrımını yapılandırmakla başlar. Ardından closure'ın yürütüleceği bir dispatch queue ile start metodu çağrılır. İzleme, kaynakları da serbest bırakan cancel metoduyla durdurulur.

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("Ağ kullanılabilir")
            } else {
                print("Ağ kullanılamaz")
            }
        }
        monitor.start(on: queue)
    }

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

Arabirim türüyle çalışma

NWPathMonitor yalnızca belirli bir arabirim türünü izleyecek şekilde yapılandırılabilir. NWInterface.InterfaceType parametresi (.wifi, .cellular, .wiredEthernet veya .loopback) ile NWPathMonitor(requiredInterfaceType:) başlatıcısını kullanın. Hiçbir tür belirtilmezse, izleme tüm arabirimleri kapsar.

Pratik örnek: bir akış uygulaması yalnızca Wi-Fi'ı izleyebilir ve hücresel veriye geçiş konusunda kullanıcıyı uyarabilir. NWPath'te isConstrained ve isExpensive'i kontrol etmek, mevcut bağlantının ücretli mi yoksa hız sınırlı mı olduğunu belirlemeye olanak tanır.

İzleme yaşam döngüsü

İzleme, uygulama başlatıldığında veya ön plana geçildiğinde başlamalı ve arka plana geçildiğinde durmalıdır. Tüm uygulama için tek bir NWPathMonitor örneği (singleton) oluşturulması ve bir protokol veya hizmet katmanı aracılığıyla farklı modüllerden kullanılması önerilir.

NWPath özellikleri ve yetenekleri

NWPath, pathUpdateHandler'a iletilen ve ağ yolunun mevcut durumunu tanımlayan bir nesnedir. Çoğu ağ izleme senaryosunu kapsayan beş anahtar özellik içerir. NWPath.Status — üç durumlu bir numaralandırma: satisfied (kullanılabilir), unsatisfied (kullanılamaz) ve requiresConnection (bağlantı gerekiyor).

ÖzellikTürAçıklama
statusNWPath.StatusMevcut yol durumu: satisfied, unsatisfied, requiresConnection
availableInterfaces[NWInterface]Mevcut tüm ağ arabirimlerinin listesi
gateways[NWEndpoint]Yönlendirme için kullanılan ağ geçitlerinin listesi
isExpensiveBoolBağlantı ücretliyse True (hücresel veri, kişisel erişim noktası)
isConstrainedBoolBağlantı hız sınırlıysa True (Düşük Veri Modu)

Maliyet ve kısıtlamaları kontrol etme

isExpensive özelliği, büyük miktarda veriyle çalışan uygulamalar için kritik bir bayraktır. isExpensive = true ise, uygulama akış kalitesini düşürmeli, güncelleme indirmelerini ertelemeli veya kullanıcıyı uyarmalıdır. isConstrained, Düşük Veri Modu'nun etkin olduğunu gösterir.

(İnternet kullanılabilirliğini (sadece ağ değil) kontrol etmek için usesInterfaceType metodunu kullanın. Cihaz internetsiz Wi-Fi'a bağlıysa — NWPath satisfied gösterebilir, ancak gerçek erişim yoktur. Bu gibi durumlarda, NWConnection üzerinden ek doğrulama gerekir.

NWPathMonitor uygulama örnekleri

Maliyet yönetimi, arabirim türleri ve bir yayıncı aracılığıyla ViewModel bildirimi içeren gelişmiş bir NWPathMonitor uygulamasına bakalım. Örnek, ağ durumu değiştiğinde tepkisel UI güncellemeleri için Combine çerçevesini kullanır.

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
    }
}

Ertelenmiş eylemle ağ kaybını yönetme

Bağlantı kaybedildiğinde, yalnızca UI'yı bilgilendirmek değil, aynı zamanda ertelenmiş eylemler gerçekleştirmek de gerekebilir — örneğin, daha sonra göndermek için bir istek taslağı kaydetmek. unsatisfied durumu sırasında işlemleri biriktiren ve satisfied geri yüklendiğinde gönderen bir ertelenmiş istek kuyruğu uygulayın.

Bu görev için temsilci ile ReachabilityManager deseni idealdir: NWPathMonitor yöneticiyi bilgilendirir, yönetici kuyruğu ve UI'yı günceller. Durum satisfied olarak değiştiğinde, kuyruk otomatik olarak boşalır ve UI bir bağlantı geri yükleme göstergesi alır.

NWPathMonitor vs Reachability

NWPathMonitor'dan önce, iOS'ta ağ izleme için standart çözüm, SystemConfiguration üzerine inşa edilmiş Apple'ın Reachability kütüphanesiydi (belgelerden örnek). Temel farklar: Reachability C'de SCNetworkReachability üzerinden çalışır, modern ağ türlerini desteklemez ve yalnızca ikili bir kullanılabilirlik yanıtı sağlar.

NWPathMonitor bu sınırlamaları giderir: Swift ile yazılmıştır, VPN, multipath, 5G ve LTE destekler, her arabirim hakkında ayrıntılı bilgi sağlar ve GCD üzerinden eşzamansız olarak çalışır. Reachability hala minimum iOS 11 ve altını destekleyen projelerde kullanılmaktadır.

ÖzellikNWPathMonitorReachability
Minimum sürümiOS 12iOS 2
DilSwift (Network)C (SystemConfiguration)
Arabirim türleriWi-Fi, Cellular, Ethernet, VPNWi-Fi, WWAN (genel)
isExpensiveEvetHayır
EşzamansızGCD (dispatch queue)RunLoop
Birden çok arabirimEvet (multipath)Hayır

Reachability ne zaman kullanılmalı

Uygulamanız iOS 11 ve altını destekliyorsa, Reachability tek seçenek olarak kalır. iOS 12+ projeleri için doğrudan NWPathMonitor kullanılması önerilir — modern Swift kodu, Combine ve SwiftUI ile daha iyi entegre olur.

Reachability'den NWPathMonitor'a geçiş basittir: aynı işleme mantığını koruyarak SCNetworkReachability çağrılarını NWPathMonitor ile değiştirin. Bir soyutlama katmanı (NetworkMonitorProtocol), uygulamanın iş mantığını değiştirmeden uygulamalar arasında geçiş yapmayı sağlar.

Sıkça sorulan sorular

NWPathMonitor için gereken minimum iOS sürümü nedir?

NWPathMonitor, iOS 12.0, macOS 10.14, watchOS 5.0 ve tvOS 12.0 itibarıyla kullanılabilir. Daha eski sürümleri destekleyen projeler için SystemConfiguration'dan Reachability veya #available ile koşullu derleme içeren sarmalayıcı kütüphaneler kullanın.

NWPath.Status.satisfied ve unsatisfied arasındaki fark nedir?

Satisfied, trafiğin en az bir arabirimden geçebileceği anlamına gelir. Unsatisfied — hiçbir arabirim kullanılamaz. requiresConnection durumu — yol bir bağlantı kurulmasını gerektirir (örneğin VPN bağlı değil) ve trafik geçici olarak geçemez.

Ağ türü nasıl belirlenir — Wi-Fi mı hücresel mi?

NWPath'te usesInterfaceType metodunu kullanın: Wi-Fi için path.usesInterfaceType(.wifi), hücresel veri için path.usesInterfaceType(.cellular). Metot, mevcut trafik belirtilen arabirim türünden geçiyorsa true döndürür.

Arka plana geçerken NWPathMonitor iptal edilmeli mi?

Pilden tasarruf etmek için arka planda izlemenin duraklatılması önerilir. applicationDidEnterBackground'da monitor.cancel() çağırmak ve applicationWillEnterForeground'da start'ı yeniden başlatmak güç tüketimini azaltır. Kritik işlemler için Background Task kullanın.

NWPathMonitor ile kapsamlı portallar nasıl ele alınır?

NWPathMonitor, kapsamlı bir portalla bile satisfied gösterebilir. Gerçek internet erişimini belirlemek için NWConnection üzerinden güvenilir bir uç noktaya HTTP isteği gerçekleştirin. Bir yönlendirme olursa — portal etkindir ve bir WebView'da yetkilendirme gerektirir.

Özet

  • NWPathMonitor — GCD ve Combine desteğiyle iOS 12+'da ağ yolunu izlemek için Network çerçevesinin bir sınıfı.
  • NWPath bağlantı hakkında tam bilgi içerir: durum, arabirim türleri, maliyetler, kısıtlamalar ve ağ geçitleri.
  • start metodu belirtilen kuyrukta izlemeyi başlatır, pathUpdateHandler NWPath güncellemelerini alır.
  • isExpensive ve isConstrained özellikleri ücretli ve kısıtlı bağlantıları tanımlamayı sağlar.
  • NWPathMonitor iOS 12+ için Reachability'nin yerini alarak daha zengin bir Swift API sunar.
  • Arabirim türüne göre filtreleme, requiredInterfaceType parametresiyle başlatıcı aracılığıyla uygulanır.
  • Arka plan çalışması için, ön plan ve arka plan arasında geçiş yaparken izleme duraklatılmalı ve devam ettirilmelidir.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun