NWPathMonitor: यह क्या है, नेटवर्क ट्रैकिंग और iOS में काम करना

लेखक: IT Sectr प्रकाशित: 2026-03-10 पढ़ने का समय: 9 मिनट

NWPathMonitor iOS और macOS में Network फ़्रेमवर्क का एक वर्ग है जो डिवाइस के नेटवर्क पथ की स्थिति की निगरानी के लिए है। Apple Developer Documentation (2025) के अनुसार, NWPathMonitor एप्लिकेशन को नेटवर्क उपलब्धता को ट्रैक करने, इंटरफ़ेस प्रकार निर्धारित करने और कॉनेक्शन परिवर्तनों पर प्रतिक्रिया देने की अनुमति देता है। NWPathMonitor NWPath के साथ एक सुविधाजनक कॉलबैक के माध्यम से कनेक्शन प्रकार, डेटा लागत और इंटरनेट उपलब्धता के बारे में जानकारी प्रदान करता है।

मुख्य बातें

  • NWPathMonitor — iOS और macOS में अस्यंक्रोनस नेटवर्क पथ निगरानी के लिए Network फ़्रेमवर्क का एक वर्ग।
  • NWPath में नेटवर्क उपलब्धता, इंटरफ़ेस प्रकार (Wi-Fi, सेलुलर डेटा, Ethernet) और लागत स्थिति की जानकारी होती है।
  • start विधि निर्दिष्ट dispatch queue पर निगरानी शुरू करती है, cancel विधि इसे रोकती है।
  • pathUpdateHandler गुण — एक क्लोजर जो नेटवर्क पथ स्थिति में प्रत्येक परिवर्तन पर बुलाया जाता है।
  • NWPathMonitor requiredInterfaceType पारमीटर के माध्यम से आवश्यक इंटरफ़ेस प्रकार के अनुसार फ़िल्टरिंग का समर्थन करता है।

NWPathMonitor क्या है?

NWPathMonitor Network फ़्रेमवर्क का एक वर्ग है जो Apple द्वारा iOS 12 और macOS 10.14 Mojave में प्रस्तुत किया गया था। यह डिवाइस के नेटवर्क पथ में परिवर्तनों को ट्रैक करने के लिए एक आधुनिक API प्रदान करता है — नेटवर्क इंटरफ़ेसों का संयोजन जिसके माध्यम से एप्लिकेशन का ट्रैफ़िक गुजरता है।

iOS 12 से पहले, नेटवर्क निगरानी के लिए C-आधारित SystemConfiguration फ़्रेमवर्क पर निर्मित Reachability लाइब्रेरी का उपयोग किया जाता था। NWPathMonitor एक समृद्ध API के साथ एक देशी Swift विकल्प है, जो आधुनिक कनेक्शन प्रकारों (VPN, multipath, LTE, 5G) का समर्थन और बिल्ट-इन GCD एकीकरण प्रदान करता है।

NWPathMonitor और Reachability के बीच मुख्य अंतर — NWPath ऑब्जेक्ट केवल एक द्विआधारी “उपलब्ध/अनुपलब्ध” स्थिति ही नहींं, बल्कि पथ की पूरी तस्वीर प्रदान करता है: उपयोग किए गए इंटरफ़ेस, उनकी प्राथमिकता, लागत, रोमिंग स्थिति और प्रॉक्सी और VPN क्षमताएँ। डिवेलपर को नेटवर्क अनुरोधों के बारे में निर्णय लेने के लिए व्यापक जानकारी मिलती है।

Network फ़्रेमवर्क का इतिहास

Network फ़्रेमवर्क निम्न-स्तरीय C API — CFStream और BSD Sockets के आधुनिक प्रतिस्थापन के रूप में उभरा। यह watchOS और tvOS सहित सभी Apple प्लेटफ़ॉर्म पर नेटवर्क संचार के लिए एक एकीकृत इंटरफ़ेस प्रदान करता है। NWPathMonitor NWConnection, NWListener और NWBrowser के साथ इस फ़्रेमवर्क का हिस्सा है।

Network फ़्रेमवर्क Swift में लिखा गया है और अस्यंक्रोनस प्रोसेसिंग के लिए GCD का उपयोग करता है। इसका मतलब है कि NWPathMonitor कॉलबैक निर्दिष्ट dispatch queue पर निष्पादित होते हैं, जो एप्लिकेशन के मौजूदा मल्टीथ्रेडिंग आर्किटेक्चर में मैनुअल थ्रेड प्रबंधन के बिना एकीकृत होते हैं।

एप्लिकेशन में NWPathMonitor का उपयोग कैसे करें

NWPathMonitor का उपयोग वर्ग का एक उदाहरण बनाने और pathUpdateHandler कॉलबैक को कॉन्फ़िगर करने से शुरू होता है। फिर start विधि को एक dispatch queue के साथ बुलाया जाता है जहाँ क्लोजर निष्पादित होगा। निगरानी cancel विधि द्वारा रोकी जाती है, जो संसाधनों को भी मुक्त करती है।

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("नेटवर्क उपलब्ध")
            } else {
                print("नेटवर्क अनुपलब्ध")
            }
        }
        monitor.start(on: queue)
    }

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

इंटरफ़ेस प्रकार के साथ कार्य करना

NWPathMonitor को केवल एक विशिष्ट इंटरफ़ेस प्रकार की निगरानी के लिए कॉन्फ़िगर किया जा सकता है। इसके लिए प्रारंभक NWPathMonitor(requiredInterfaceType:) का उपयोग करें जिसमें NWInterface.InterfaceType पारमीटर — .wifi, .cellular, .wiredEthernet या .loopback हो। यदि कोई प्रकार निर्दिष्ट नहीं है, तो निगरानी सभी इंटरफ़ेसों को कवर करती है।

व्यावहारिक उदाहरण: एक स्ट्रीमिंग एप्लिकेशन केवल Wi-Fi की निगरानी कर सकता है और सेलुलर डेटा पर स्विच करने पर उपयोगकर्ता को चेतावनी दे सकता है। NWPath में isConstrained और isExpensive की जांच यह निर्धारित करने की अनुमति देती है कि क्या वर्तमान कनेक्शन शुल्क युक्त है या गति सीमित है।

निगरानी जीवन चक्र

निगरानी एप्लिकेशन लॉन्च या अग्रगमन में आने पर शुरू होनी चाहिए और पृष्ठभूमि में जाने पर रुकनी चाहिए। पूरे एप्लिकेशन के लिए एक NWPathMonitor उदाहरण (singleton) बनाने और इसे प्रोटोकॉल या सर्विस परत के माध्यम से विभिन्न मॉड्यूलों से उपयोग करने की अनुशंसा दी जाती है।

NWPath के गुण और क्षमताएँ

NWPath एक ऑब्जेक्ट है जो pathUpdateHandler को भेजा जाता है और नेटवर्क पथ की वर्तमान स्थिति का वर्णन करता है। इसमें पाँच मुख्य गुण हैं जो अधिकांश नेटवर्क निगरानी परिदृश्यों को कवर करते हैं। NWPath.Status — तीन अवस्थाओं वाला एक एनुमरेशन: satisfied (उपलब्ध), unsatisfied (अनुपलब्ध) और requiresConnection (कनेक्शन की आवश्यकता है)।

गुणप्रकारवर्णन
statusNWPath.Statusवर्तमान पथ स्थिति: satisfied, unsatisfied, requiresConnection
availableInterfaces[NWInterface]सभी उपलब्ध नेटवर्क इंटरफ़ेसों की सूची
gateways[NWEndpoint]रूटिंग के लिए उपयोग किए जाने वाले गेटवेज़ की सूची
isExpensiveBoolTrue यदि कनेक्शन शुल्क युक्त है (सेलुलर डेटा, व्यक्तिगत हॉटस्पॉट)
isConstrainedBoolTrue यदि कनेक्शन गति सीमित है (निम्न डेटा मोड)

लागत और प्रतिबंधों की जाँच

isExpensive गुण एप्लिकेशनों के लिए एक महत्वपूर्ण फ़्लैग है जो बड़ी मात्रा में डेटा के साथ काम करते हैं। यदि isExpensive = true है, तो एप्लिकेशन को स्ट्रीमिंग गुणवत्ता कम करनी चाहिए, अपडेट डाउनलोड स्थगित करने चाहिए या उपयोगकर्ता को चेतावनी देनी चाहिए। isConstrained इंदिकात करता है कि निम्न डेटा मोड सक्षम है।

इंटरनेट उपलब्धता (केवल नेटवर्क नहीं) की जाँच करने के लिए, usesInterfaceType विधि का उपयोग करें। यदि डिवाइस बिना इंटरनेट के Wi-Fi से जुड़ा है — NWPath satisfied दिखा सकता है, लेकिन वास्तविक पहुँच अनुपस्थित है। ऐसे मामलों में, NWConnection के माध्यम से अतिरिक्त सत्यापन की आवश्यकता होती है।

NWPathMonitor कार्यान्वयन उदाहरण

आइए लागत संभालन, इंटरफ़ेस प्रकार और प्रकाशक के माध्यम से ViewModel अधिसूचना के साथ एक उन्नत NWPathMonitor कार्यान्वयन देखें। उदाहरण नेटवर्क स्थिति बदलने पर प्रतिक्रियाशील UI अपडेट के लिए Combine फ़्रेमवर्क का उपयोग करता है।

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

विलंबित कार्रवाई के साथ नेटवर्क हानि से निपटना

जब कनेक्शन खो जाता है, तो आपको न केवल UI को सूचित करने की आवश्यकता हो सकती है बल्कि विलंबित कार्रवाई करने की भी — उदाहरण के लिए, बाद में भेजने के लिए एक अनुरोध मसौदा सहेजें। एक विलंबित अनुरोधों की पंक्ति लागू करें जो unsatisfied स्थिति के दौरान संचालनों को एकत्र करती है और satisfied बहाल होने पर उन्हें भेजती है।

इस कार्य के लिए डिलीगेट के साथ ReachabilityManager पैटरन आदर्श है: NWPathMonitor मैनेजर को सूचित करता है, मैनेजर पंक्ति और UI को अपडेट करता है। जब स्थिति बदलकर satisfied हो जाती है, तो पंक्ति स्वचालित रूप से खाली हो जाती है, और UI को कनेक्शन बहाली का संकेत मिलता है।

NWPathMonitor बनाम Reachability

NWPathMonitor से पहले, iOS में नेटवर्क निगरानी का मानक समाधान Apple की Reachability लाइब्रेरी (दस्तावेज़ीकरण से उदाहरण) था, जो SystemConfiguration पर निर्मित है। मुख्य अंतर: Reachability C में SCNetworkReachability के माध्यम से काम करती है, आधुनिक नेटवर्क प्रकारों का समर्थन नहीं करती है, और केवल एक द्विआधारी उपलब्धता प्रतिक्रिया देती है।

NWPathMonitor इन सीमाओं को संबोधित करता है: यह Swift में लिखा गया है, VPN, multipath, 5G और LTE का समर्थन करता है, प्रत्येक इंटरफ़ेस के बारे में विस्तृत जानकारी प्रदान करता है और GCD के माध्यम से अस्यंक्रोनस रूप से काम करता है। Reachability का उपयोग अभी भी न्यूनतम iOS 11 और उससे नीचे का समर्थन करने वाली परियोजनाओं में किया जाता है।

विशेषताNWPathMonitorReachability
न्यूनतम संस्करणiOS 12iOS 2
भाषाSwift (Network)C (SystemConfiguration)
इंटरफ़ेस प्रकारWi-Fi, Cellular, Ethernet, VPNWi-Fi, WWAN (सामान्य)
isExpensiveहाँनहीं
अस्यंक्रोनसGCD (dispatch queue)RunLoop
अनेक इंटरफ़ेसहाँ (multipath)नहीं

Reachability का उपयोग कब करें

यदि आपका एप्लिकेशन iOS 11 और उससे नीचे का समर्थन करता है, तो Reachability एकमात्र विकल्प बनी रहती है। iOS 12+ परियोजनाओं के लिए, सीधे NWPathMonitor का उपयोग करने की अनुशंसा दी जाती है — यह आधुनिक Swift कोड, Combine और SwiftUI के साथ बेहतर एकीकृत होता है।

Reachability से NWPathMonitor में माइग्रेशन सरल है: बस SCNetworkReachability कॉल्स को NWPathMonitor से बदलें, समान हैंडलिंग तर्क को बनाए रखें। एक अबस्ट्रेक्शन परत (NetworkMonitorProtocol) एप्लिकेशन के व्यावसायिक तर्क को बदले बिना कार्यान्वयनों के बीच स्विच करने की अनुमति देगी।

अक्सर पूछे जाने वाले प्रश्न

NWPathMonitor के लिए न्यूनतम iOS संस्करण क्या है?

NWPathMonitor iOS 12.0, macOS 10.14, watchOS 5.0 और tvOS 12.0 से उपलब्ध है। पुराने संस्करणों का समर्थन करने वाली परियोजनाओं के लिए, SystemConfiguration से Reachability या #available के माध्यम से सार्तिक संकलन वाली रैपर लाइब्रेरी का उपयोग करें।

NWPath.Status.satisfied और unsatisfied में क्या अंतर है?

Satisfied का मतलब है कि ट्रैफ़िक कम से कम एक इंटरफ़ेस से गुजर सकता है। Unsatisfied — कोई इंटरफ़ेस उपलब्ध नहीं है। requiresConnection अवस्था — पथ को कनेक्शन स्थापित करने की आवश्यकता है (उदाहरण के लिए, VPN कनेक्ट नहीं है), और ट्रैफ़िक अस्थायी रूप से पास नहीं हो सकता।

नेटवर्क प्रकार कैसे निर्धारित करें — Wi-Fi या सेलुलर?

NWPath पर usesInterfaceType विधि का उपयोग करें: Wi-Fi के लिए path.usesInterfaceType(.wifi), सेलुलर डेटा के लिए path.usesInterfaceType(.cellular)। यह विधि true लौटाती है यदि वर्तमान ट्रैफ़िक निर्दिष्ट इंटरफ़ेस प्रकार से गुजरता है।

क्या मैं पृष्ठभूमि में जाने पर NWPathMonitor को रद्द कर दूँ?

बैटरी बचाने के लिए पृष्ठभूमि में निगरानी रोकने की अनुशंसा दी जाती है। applicationDidEnterBackground में monitor.cancel() को कॉल करना और applicationWillEnterForeground में start को पुनर्स्थापित करना बिजली की खपत कम करता है। महत्वपूर्ण कार्रवाईयों के लिए Background Task का उपयोग करें।

NWPathMonitor के साथ कैप्टिव पोर्टल कैसे संभालें?

NWPathMonitor कैप्टिव पोर्टल के साथ भी satisfied दिखा सकता है। वास्तविक इंटरनेट पहुँच निर्धारित करने के लिए, NWConnection के माध्यम से एक विश्वसनीय एंडपॉइंट पर HTTP अनुरोध निष्पादित करें। यदि रिडायरेक्ट होता है — पोर्टल सक्रिय है और WebView में प्रामाणीकरण की आवश्यकता है।

सारांश

  • NWPathMonitor — iOS 12+ में GCD और Combine समर्थन के साथ नेटवर्क पथ निगरानी के लिए Network फ़्रेमवर्क का एक वर्ग।
  • NWPath में कनेक्शन के बारे में पूरी जानकारी होती है: स्थिति, इंटरफ़ेस प्रकार, लागत, प्रतिबंध और गेटवेज़।
  • start विधि निर्दिष्ट क्यू पर निगरानी शुरू करती है, pathUpdateHandler को NWPath अपडेट प्राप्त होते हैं।
  • isExpensive और isConstrained गुण शुल्क युक्त और प्रतिबंधित कनेक्शन की पहचान करने की अनुमति देते हैं।
  • NWPathMonitor ने iOS 12+ के लिए Reachability को बदल दिया, जो एक समृद्ध Swift API प्रदान करता है।
  • इंटरफ़ेस प्रकार द्वारा फ़िल्टरिंग requiredInterfaceType पारमीटर के साथ प्रारंभक के माध्यम से कार्यान्वित होती है।
  • पृष्ठभूमि संचालन के लिए, अग्रगमन और पृष्ठभूमि के बीच स्विच करते समय निगरानी को रोका और फिर से शुरू किया जाना चाहिए।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें