Significant Location Change (SLC) iOS کا ایک سروس ہے جو ڈیوائس کی بڑی نقل و حرکت کی نگرانی کرتی ہے، اور صرف جغرافیائی متناسقات میں اہم تبدیلیوں پر ایپلیکیشن کو مطلع کرتی ہے۔ ریئل ٹائم GPS ٹریکنگ کے برعکس، SLC مقام کا تعین کرنے کے لیے سیلولر ٹاورز استعمال کرتا ہے، جو کم سے کم توانائی کی کھپت کو یقینی بناتا ہے۔ دستاویزات کے مطابق Apple Developer, 2025, Significant Location Change ایپلیکیشن کو GPS کے مسلسل کام کیے بغیر جیولکیشن اپ ڈیٹس حاصل کرنے کی اجازت دیتا ہے، جو مسلسل ٹریکنگ کے مقابلے میں 90% تک بیٹری بچاتا ہے۔
اہم نکات
Significant Location Change (SLC) iOS کی ایک توانائی سے موثر جیولکیشن سروس ہے، جو Core Location فریم ورک میں بنائی گئی ہے۔ یہ ان ایپلیکیشنز کے لیے ڈیزائن کیا گیا ہے جنہیں GPS ماڈیول کے مسلسل استعمال کے بغیر صارف کی بڑی نقل و حرکت کو ٹریک کرنے کی ضرورت ہے۔ SLC سیلولر کمیونیکیشن سیلز کے درمیان سوئچ کرتے وقت خود بخود فعال ہو جاتا ہے اور ایپلیکیشن کو CLLocationManagerDelegate ڈیلیگیٹ کے ذریعے didUpdateLocations طریقہ سے مطلع کرتا ہے۔
GPS لیول ٹریکنگ (معیاری startUpdatingLocation) کے برعکس، SLC کو پروسیسر اور GPS چپ کی مسلسل سرگرمی کی ضرورت نہیں ہے۔ iOS تقریبی مقام کا تعین کرنے کے لیے سیلولر ٹاورز سے سگنلز استعمال کرتا ہے اور صرف متناسقات میں اہم فرق پانے پر ایپلیکیشن لانچ کرتا ہے۔ یہ ایپلیکیشن کو اپ ڈیٹس کے درمیان “سونے” کی اجازت دیتا ہے، جس میں کم سے کم توانائی خرچ ہوتی ہے۔
SLC iOS 5 سے شروع کرتے ہوئے سیلولر ماڈیول والے تمام ڈیوائسز پر دستیاب ہے۔ iPod Touch اور iPad Wi-Fi Only پر سروس دستیاب نہیں ہے، کیونکہ متناسقات کے تعین کے لیے سیلولر ٹاورز ہی استعمال ہوتے ہیں۔ Core Location خود بخود طے کرتا ہے کہ کون سے واقعات کو اہم سمجھا جائے — ڈویلپر SLC کی حساسیت کو ایڈجسٹ نہیں کر سکتا یا ٹریگر کے لیے کم از کم فاصلہ متعین نہیں کر سکتا۔
SLC ان ایپلیکیشنز کے لیے مثالی ہے جنہیں اعلی جیولکیشن درستگی کی ضرورت نہیں: موسم ٹریکر، ڈیلیوری سروسز، قریبی اشیاء تلاش کرنے والی ایپلیکیشنز، دیکھے گئے مقامات کا تجزیہ۔ SLC iOS سسٹم کے ذریعے جیو فینسنگ (Geofencing) کو توانائی بچت موڈ میں فعال کرنے کے لیے بھی استعمال ہوتا ہے۔ نیویگیشن ایپلیکیشنز کو زیادہ درست GPS ٹریکنگ کی ضرورت ہوتی ہے۔
Significant Location Change سیلولر ٹاور شناخت کنندگان (Cell ID) کے تجزیہ کی بنیاد پر کام کرتا ہے، جو ڈیوائس نیٹ ورک سے منسلک ہونے پر حاصل کرتا ہے۔ iOS GPS آن کیے بغیر ہی ٹاورز کے متناسقات کا ڈیٹا بیس برقرار رکھتا ہے اور تقریبی مقام کا تعین کر سکتا ہے۔ جب ڈیوائس ایک نئے ٹاور پر سوئچ کرتا ہے، سسٹم نئے اور پچھلے مقام کا موازنہ کرتا ہے، اور اگر فرق اہم ہے، تو واقعہ پر کارروائی کرنے کے لیے ایپلیکیشن لانچ کرتا ہے۔
سسٹم کلسٹر طریقہ استعمال کرتا ہے: جغرافیائی جگہ کو ایک مخصوص رداس کے کلسٹرز میں تقسیم کیا جاتا ہے۔ SLC صرف کلسٹر کی حد عبور کرنے پر ہی ایک واقعہ پیدا کرتا ہے، نہ کہ اس کے اندر ہر معمولی حرکت پر۔ یہ ایک ہی کوریج زون کے اندر (جیسے عمارت یا محلے میں) چلتے وقت ایپلیکیشن کالز میں اضافے کو روکتا ہے۔ درستگی SLC کی سیلولر ٹاورز کی کثافت کے لحاظ سے 500 میٹر سے کئی کلومیٹر تک ہوتی ہے۔
جب iOS ایک اہم تبدیلی کا پتہ لگاتا ہے، یہ ایپلیکیشن کو بیک گراؤنڈ حالت سے جگاتا ہے (اگر یہ چل رہی ہے) اور واقعہ Core Location ڈیلیگیٹ کو بھیجتا ہے۔ ایپلیکیشن کو کارروائی کے لیے مختصر وقت ملتا ہے (بیک گراؤنڈ وقت کا تقریباً 10–30 سیکنڈ) — اس دوران متناسقات پر کارروائی کرنی ہوگی اور ضرورت پڑنے پر GPS کے ذریعے مزید درست اپ ڈیٹ شیڈول کرنا ہوگا۔
SLC کو Suspended یا Background حالت سے ایپلیکیشن جگانے کا اختیار ہے۔ اگر میموری کی کمی کی وجہ سے ایپلیکیشن سسٹم کے ذریعے بند کر دی گئی ہے، SLC اسے بیک گراؤنڈ میں دوبارہ شروع کرے گا (relaunch)۔ اس کے لیے ایپلیکیشن کو didFinishLaunchingWithOptions طریقہ میں UIApplication.LaunchOptionsKey.location کے لیے سائن اپ کرنا ہوگا۔ واقعہ پر کارروائی کے بعد، سسٹم ایپلیکیشن کو دوبارہ Suspended کر سکتا ہے۔
ٹریگرز SLC کے صرف iOS سسٹم کے ذریعے متعین کیے جاتے ہیں — ڈویلپر پروگرام کے ذریعے یہ متاثر نہیں کر سکتا کہ کس متناسق تبدیلی کو “اہم” سمجھا جائے۔ تاہم، کچھ دستاویزی منظرنامے ہیں جن میں SLC یقینی واقعہ پیدا کرتا ہے۔ ان ٹریگرز کو سمجھنا ڈویلپر کو صحیح ایپلیکیشن رویہ ڈیزائن کرنے میں مدد کرتا ہے۔
Cell tower change — SLC کا بنیادی ٹریگر۔ جب ڈیوائس سیلولر ٹاورز کے درمیان سوئچ کرتا ہے (شہر میں گھومتے ہوئے، ہائی وے پر)، سسٹم چیک کرتا ہے کہ پرانے اور نئے ٹاور کے درمیان متناسقات کافی حد تک تبدیل ہوئے ہیں یا نہیں۔ اگر ہاں، تو ایک واقعہ پیدا ہوتا ہے۔ گھنے ٹاور نیٹ ورک والے شہری حالات میں، SLC ہر 1–3 کلومیٹر پر ٹریگر ہو سکتا ہے۔
اگر کوئی دوسری ایپلیکیشن یا سسٹم سروس (جیسے “میرا iPhone تلاش کریں”، نیویگیشن) GPS ماڈیول آن کرتی ہے، SLC بھی درست متناسقات کی اپ ڈیٹ حاصل کر سکتا ہے۔ یہ ایک ضمنی اثر ہے: GPS درست مقام کا تعین کرتا ہے اور iOS اسے SLC پر سائن اپ کردہ تمام ایپلیکیشنز کو بھیجتا ہے۔ تاہم، اس ٹریگر پر انحصار نہیں کیا جا سکتا — یہ یقینی نہیں ہے۔
اگرچہ SLC براہ راست Wi-Fi استعمال نہیں کرتا، Wi-Fi نیٹ ورک تبدیل کرنے سے بالواسطہ طور پر واقعہ ہو سکتا ہے اگر ڈیوائس Apple Location Service (Wi-Fi ڈیٹا بیس کے ذریعے مقام) سے نئے متناسقات حاصل کرے۔ iOS Wi-Fi رسائی پوائنٹس کے متناسقات کو ہیش کرتا ہے اور ٹاور تبدیلی کے درمیان مقام کو بہتر بنانے کے لیے استعمال کرتا ہے۔
| ٹریگر | ضمانت | تاخیر | درستگی |
|---|---|---|---|
| سیلولر ٹاور تبدیل کرنا | اعلی | 1–30 سیکنڈ | 500 میٹر – 3 کلومیٹر |
| دیگر ایپس کا GPS | کم | فوری | 10 میٹر تک |
| Wi-Fi تبدیل کرنا | درمیانی | 5 منٹ تک | 100–500 میٹر |
iOS مقام حاصل کرنے کے لیے کئی میکانزم فراہم کرتا ہے، ہر ایک کی اپنی درستگی، توانائی کی کھپت اور استعمال کے منظرنامے ہیں۔ Significant Location Change ٹاورز کے ذریعے موٹے تخمینے اور درست GPS ٹریکنگ کے درمیان جگہ لیتا ہے، ان ایپلیکیشنز کے لیے متوازن آپشن فراہم کرتا ہے جنہیں ریئل ٹائم میں اعلی درستگی کی ضرورت نہیں۔
Standard Location Service (startUpdatingLocation()) متناسقات کے زیادہ سے زیادہ درست تعین کے لیے GPS، Wi-Fi اور سیلولر ٹاورز استعمال کرتا ہے۔ درستگی 10 میٹر تک ہے، لیکن توانائی کی کھپت زیادہ ہے — GPS ماڈیول مسلسل فعال رہتا ہے۔ نیویگیشن، فٹنس ٹریکرز، AR ایپلیکیشنز کے لیے موزوں۔ اس کے برعکس، SLC مسلسل GPS استعمال نہیں کرتا اور اس کی درستگی 500 میٹر یا اس سے کم ہے۔
Region Monitoring متعین جغرافیائی علاقوں میں داخلے اور باہر نکلنے کو ٹریک کرتا ہے۔ SLC کے برعکس، ڈویلپر خود علاقوں کی حدود متعین کرتا ہے (100 میٹر سے رداس)۔ Geofencing SLC کو ایک معاون میکانزم کے طور پر استعمال کرتا ہے — سسٹم پہلے SLC کے ذریعے تقریبی مقام کا تعین کرتا ہے، پھر علاقے میں داخلے/باہر نکلنے کا درست پتہ لگانے کے لیے GPS آن کرتا ہے۔ زیادہ سے زیادہ تعداد ٹریک کیے جانے والے علاقوں کی — 20۔
Visit Monitoring — iOS 8+ کی ایک ماہر سروس ہے جو مقامات کے دورے (آمد اور روانگی) کو ٹریک کرتی ہے۔ یہ SLC اور دیگر سگنلز کے امتزاج کا استعمال یہ تعین کرنے کے لیے کرتی ہے کہ صارف کہیں رکا اور کب چھوڑا۔ Visit Monitoring SLC سے زیادہ توانائی سے موثر ہے، کیونکہ یہ کم واقعات پیدا کرتا ہے اور ڈیوائس پر مشین لرننگ استعمال کرتا ہے۔
| سروس | درستگی | توانائی کی کھپت | بیک گراؤنڈ |
|---|---|---|---|
| SLC | 500 میٹر – 3 کلومیٹر | بہت کم | ہاں |
| معیاری GPS | 10 میٹر تک | زیادہ | اجازت ضروری |
| Geofencing | 100 میٹر سے | کم | ہاں |
| Visit Monitoring | 100 میٹر تک | بہت کم | ہاں |
SLC iOS پر مقام حاصل کرنے کا سب سے توانائی سے موثر طریقہ ہے، Visit Monitoring کو چھوڑ کر۔ Apple کے مطابق، SLC ایک عام استعمال کے منظرنامے میں فی گھنٹہ تقریباً 0,1–0,5% بیٹری چارج استعمال کرتا ہے، جبکہ مسلسل GPS ٹریکنگ 5–10% فی گھنٹہ خرچ کر سکتی ہے۔ بچت اس لیے ہوتی ہے کیونکہ GPS ماڈیول صرف ہر واقعہ پر متناسقات کی تصدیق کے لیے تھوڑی دیر کے لیے آن ہوتا ہے۔
iOS بیٹری آپٹیمائزیشن کے ذریعے SLC کی توانائی کی کھپت کا انتظام کرتا ہے۔ اگر سسٹم دیکھتا ہے کہ ایپلیکیشن SLC واقعات کو بہت بار پروسیس کر رہی ہے (مثلاً ٹرین میں چلتے وقت بار بار ٹاور تبدیل ہونے سے بہت سے واقعات پیدا ہوتے ہیں)، iOS عارضی طور پر اطلاعات کی تعدد کم کر سکتا ہے۔ یہ ایک خودکار طریقہ کار ہے — ڈویلپر اسے بند نہیں کر سکتا۔
ہر بڑے iOS ریلیز کے ساتھ، Apple مقام تک بیک گراؤنڈ رسائی کو سخت کرتا جا رہا ہے۔ iOS 13 سے شروع کرتے ہوئے، بیک گراؤنڈ مقام کے استعمال کے لیے اجازت کی درخواست کا ڈائیلاگ تبدیل ہو گیا: صارف کو واضح طور پر “ہمیشہ” (Always) کا انتخاب کرنا ہوگا، نہ کہ صرف “ایپ استعمال کرتے وقت” (While Using)۔ Always اجازت کے بغیر، SLC اس وقت کام نہیں کرے گا جب ایپلیکیشن بیک گراؤنڈ میں ہو یا سسٹم کے ذریعے بند کر دی گئی ہو۔
آئیے Swift میں Significant Location Change کے مکمل نفاذ کی ایک مثال دیکھتے ہیں۔ اس مثال میں CLLocationManager کی سیٹ اپ، Always اجازت کی درخواست، نگرانی شروع کرنا، واقعات پر کارروائی اور سسٹم کے ذریعے بند کرنے کے بعد ایپلیکیشن کے دوبارہ شروع ہونے کی معاونت شامل ہے۔ کوڈ متناسقات پر کارروائی اور BGTaskScheduler کے ذریعے بیک گراؤنڈ کاموں کے لیے async/await کے ساتھ جدید Swift استعمال کرتا ہے۔
import CoreLocation
import UIKit
class LocationManager: NSObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
manager.pausesLocationUpdatesAutomatically = true
manager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
}
func requestAlwaysAuthorization() {
manager.requestAlwaysAuthorization()
}
func startSignificantLocationUpdates() {
manager.startMonitoringSignificantLocationChanges()
}
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
Task.detached {
await LocationProcessor.handleLocationUpdate(location)
}
}
func locationManager(_ manager: CLLocationManager,
didFailWithError error: Error) {
Logger.log("SLC error: \(error.localizedDescription)")
}
}
اگر ایپلیکیشن سسٹم کے ذریعے بند کر دی گئی ہے، SLC ایک نئے واقعہ پر اسے خود بخود دوبارہ شروع کرے گا۔ AppDelegate میں UIApplication.LaunchOptionsKey.location کے ذریعے لوکیشن ایونٹ کے ذریعے لانچ کی جانچ شامل کرنا ضروری ہے۔ دوبارہ شروع ہونے کے بعد، ایپلیکیشن کو CLLocationManager شروع کرنا چاہیے اور نگرانی جاری رکھنے کے لیے startMonitoringSignificantLocationChanges() کال کرنا چاہیے۔
class AppDelegate: NSObject, UIApplicationDelegate {
private let manager = LocationManager()
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if launchOptions?.keys.contains(.location) == true {
Logger.log("App relaunched by SLC event")
}
manager.requestAlwaysAuthorization()
manager.startSignificantLocationUpdates()
return true
}
}
Significant Location Change کا صحیح استعمال فعالیت اور توانائی کی کارکردگی کے درمیان توازن کا تقاضا کرتا ہے۔ Apple مقام تک بیک گراؤنڈ رسائی کو سختی سے کنٹرول کرتا ہے، اور جو ایپلیکیشنز SLC کا غلط استعمال کرتی ہیں یا واضح ضرورت کے بغیر استعمال کرتی ہیں، انہیں App Store میں شائع کرتے وقت مسترد کیے جانے کا خطرہ ہوتا ہے۔
Info.plist میں وجہ بتانے والی سٹرنگز شامل کرنا ضروری ہے: NSLocationAlwaysAndWhenInUseUsageDescription اور NSLocationWhenInUseUsageDescription۔ وضاحت میں واضح طور پر بتانا چاہیے کہ ایپلیکیشن کو مقام تک بیک گراؤنڈ رسائی کی کیوں ضرورت ہے۔ App Review ان سطور کو پڑھتا ہے اور اگر وجہ کافی نہیں ہے یا الفاظ مبہم ہیں تو ایپلیکیشن کو مسترد کر سکتا ہے۔ مثال: “یہ ایپ آپ کے مقام کی تبدیلی کی بنیاد پر موسم کی پیشن گوئی اپ ڈیٹ کرنے کے لیے SLC استعمال کرتی ہے۔”
ہر SLC واقعہ پر مہنگے آپریشنز (GPS لوکیشن، نیٹ ورک درخواستیں) نہ چلائیں۔ نقل و حمل میں چلتے وقت SLC ایک گھنٹے میں درجنوں واقعات پیدا کر سکتا ہے۔ ڈی باؤنسنگ استعمال کریں: آخری مکمل اپ ڈیٹ کا وقت محفوظ کریں اور اگر پچھلی اپ ڈیٹ کے 5–10 منٹ سے کم وقت گزرا ہو تو کارروائی چھوڑ دیں۔ اس سے بیٹری اور نیٹ ورک ٹریفک بچے گا۔
SLC واقعہ کے بعد طویل کارروائی کے لیے BGTaskScheduler استعمال کریں۔ جب ایپلیکیشن SLC واقعہ حاصل کرتی ہے، یہ BGProcessingTaskRequest یا BGAppRefreshTaskRequest کے ذریعے ایک بیک گراؤنڈ کام شیڈول کر سکتی ہے۔ یہ وسائل سے بھرپور کاموں (سرور کے ساتھ مطابقت، راستے کا تجزیہ) کو آنے والی بیک گراؤنڈ پر عملدرآمد کی ونڈو میں ملتوی کرنے کی اجازت دیتا ہے، SLC ردعمل کے مرکزی تھریڈ کو بلاک کیے بغیر۔
اکثر پوچھے گئے سوالات
Significant Location Change (SLC) iOS کی ایک توانائی سے موثر سروس ہے جو سیلولر ٹاورز کی بنیاد پر ڈیوائس کی بڑی نقل و حرکت کی نگرانی کرتی ہے۔ یہ مسلسل GPS ٹریکنگ کے مقابلے میں 90% تک کم توانائی خرچ کرتی ہے اور ان ایپلیکیشنز کے لیے موزوں ہے جنہیں اعلی جیولکیشن درستگی کی ضرورت نہیں۔
SLC کی درستگی سیلولر ٹاورز کی کثافت کے لحاظ سے 500 میٹر سے 3 کلومیٹر تک ہوتی ہے۔ شہری علاقوں میں درستگی زیادہ ہوتی ہے (500 میٹر کے قریب)، دیہی علاقوں میں کم (کئی کلومیٹر تک)۔ SLC متناسقات کے درست تعین کے لیے نہیں ہے — یہ نقل و حرکت کی موٹے طور پر نگرانی کے لیے ایک وسیلہ ہے۔
Info.plist میں NSLocationAlwaysAndWhenInUseUsageDescription سٹرنگ شامل کرنے کے بعد CLLocationManager.requestAlwaysAuthorization() کال کریں۔ iOS 13 سے شروع کرتے ہوئے، صارف کو سسٹم ڈائیلاگ میں واضح طور پر “ہمیشہ” (Always) کا انتخاب کرنا ہوگا۔ اس اجازت کے بغیر SLC بیک گراؤنڈ میں کام نہیں کرتا۔
ہاں، SLC ایپلیکیشن کو دوبارہ شروع کر سکتا ہے اگر یہ میموری کی کمی کی وجہ سے سسٹم کے ذریعے بند کر دی گئی تھی۔ لانچ پر didFinishLaunchingWithOptions طریقہ میں UIApplication.LaunchOptionsKey.location چیک کریں اور نگرانی جاری رکھنے کے لیے startMonitoringSignificantLocationChanges() کال کریں۔
SLC صرف سیلولر ٹاورز استعمال کرتا ہے اور مسلسل GPS آن نہیں کرتا، جس سے 90% تک بیٹری بچت ہوتی ہے۔ درستگی — 500 میٹر سے 3 کلومیٹر۔ Standard Location Service GPS، Wi-Fi اور ٹاورز استعمال کرتا ہے، درستگی 10 میٹر تک، لیکن نمایاں طور پر زیادہ توانائی خرچ کرتا ہے۔ SLC بیک گراؤنڈ نگرانی کے لیے موزوں ہے، GPS — نیویگیشن کے لیے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں