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 پراپرٹی — ایک closure جو نیٹ ورک پاتھ کی حالت میں ہر تبدیلی پر کہا جاتا ہے۔
  • 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 کے ساتھ بلایا جاتا ہے جہاں closure عمل کرے گا۔ نگرانی 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 نفاذ کے مثال

آئیے ایک اعلیٰ NWPathMonitor نفاذ دیکھیں جس میں اخراجات کا نظم، انٹرفیس کی قسمیں اور ایک پابلشر کے ذریعے ViewModel اطلاع شامل ہے۔ مثال نیٹ ورک کی حالت بدلنے پر ری اکٹو اپ ڈیٹس کے لیے 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 — GCD اور Combine کی حمایت کے ساتھ iOS 12+ میں نیٹ ورک پاتھ کی نگرانی کے لیے Network فریم ورک کا ایک کلاس۔
  • NWPath میں کنیکشن کے بارے میں مکمل معلومات ہیں: حالت، انٹرفیس کی قسمیں، اخراجات، پابندیاں اور گیٹوے۔
  • start میٹھڈ متعین قطار پر نگرانی شروع کرتا ہے، pathUpdateHandler NWPath اپ ڈیٹس وصول کرتا ہے۔
  • isExpensive اور isConstrained خوبیاں میتریڈ اور محدود کنیکشن کی شناخت کرنے میں مدد کرتی ہیں۔
  • NWPathMonitor نے iOS 12+ کے لیے Reachability کو بدل دیا، ایک امیر Swift API فراہم کرتا ہے۔
  • انٹرفیس قسم کے مطابق فلٹرنگ requiredInterfaceType پیرامیٹر کے ساتھ انیشیالائزر کے ذریعے نفاذ کی جاتی ہے۔
  • بیک گراؤنڈ کے عمل کے لیے، foreground اور background کے درمیان سوئیچ کرتے وقت نگرانی کو موقوف اور دبارہ شروع کرنا چاہیے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں