Location Permission ایک اجازت ہے جو موبائل ایپلی کیشن صارف سے اس کے جغرافیائی محل وقوع کے ڈیٹا تک رسائی کے لیے مانگتی ہے۔ اس اجازت کے بغیر، ایپلی کیشن ڈیوائس کے کوآرڈینیٹس کا تعین نہیں کر سکتی، اور اس لیے جغرافیائی محل وقوع کی خصوصیات فراہم نہیں کر سکتی۔ Apple Developer Documentation, 2024 کے مطابق، تمام ایپلی کیشنز جو جغرافیائی محل وقوع کی خدمات استعمال کرتی ہیں، صارف کی واضح رضامندی سسٹم ڈائیلاگ کے ذریعے لینے کی پابند ہیں۔
اہم نکات
Location Permission ایک آپریٹنگ سسٹم کا طریقہ کار ہے جو ڈیوائس کے جغرافیائی محل وقوع کے ڈیٹا تک ایپلی کیشن کی رسائی کو منظم کرتا ہے۔ صارف کی واضح رضامندی کے بغیر، ایپلی کیشن GPS کوآرڈینیٹس، Wi-Fi نیٹ ورک ڈیٹا یا سیلولر ٹاور کی معلومات حاصل نہیں کر سکتی۔
موبائل پلیٹ فارم Android اور iOS اپنا اجازتی نظام نافذ کرتے ہیں، لیکن عمومی منطق ایک جیسی ہے: ایپلی کیشن مینی فیسٹ یا کنفیگریشن فائل میں ضروری اجازتوں کا اعلان کرتی ہے، پھر رن ٹائم پر ان کی درخواست کرتی ہے۔ Android Developers, 2024 کے مطابق، Android 10 سے شروع ہو کر، تمام جغرافیائی محل وقوع کی اجازتیں خطرناک زمرے میں آتی ہیں اور رن ٹائم درخواست کی ضرورت ہوتی ہیں۔
اس نقطہ نظر کی وجہ صارف کی رازداری کا تحفظ ہے۔ مقام کے ڈیٹا کو سفری راستے بنانے، کام اور تفریح کے مقامات کا تعین کرنے اور فرد کی شناخت کے لیے استعمال کیا جا سکتا ہے۔ لہذا، دونوں پلیٹ فارم درخواست ڈائیلاگ میں شفاف وضاحت کی ضرورت رکھتے ہیں: ایپلی کیشن کو یہ بتانا ہوگا کہ اسے جغرافیائی محل وقوع تک رسائی کی ضرورت کیوں ہے۔
جغرافیائی محل وقوع کی اجازت کسی بھی ایپلی کیشن کے لیے ضروری ہے جس کی فعالیت صارف کے جسمانی مقام کو جاننے پر منحصر ہو۔ نقشے اور نیویگیشن، ڈیلیوری ایپلی کیشنز، موسم کی خدمات، جغرافیائی ٹیگنگ والے سوشل نیٹ ورک — سافٹ ویئر کی یہ تمام اقسام Location Permission کی ضرورت رکھتی ہیں۔
اس اجازت کے بغیر، ایپلی کیشن کسی بھی دستیاب طریقے سے ڈیوائس کے کوآرڈینیٹس کا تعین نہیں کر سکتی: نہ GPS ماڈیول کے ذریعے، نہ Wi-Fi اسکیننگ کے ذریعے، نہ سیلولر ٹاور پوزیشننگ کے ذریعے۔ صارف کسی بھی وقت سسٹم سیٹنگز میں اجازت منسوخ کر سکتا ہے، جس کے بعد ایپلی کیشن کو انکار کو صحیح طریقے سے ہینڈل کرنا ہوگا۔
Pew Research Center (2024) کی ایک تحقیق کے مطابق، تقریباً 45% صارف ان ایپلی کیشنز میں جغرافیائی محل وقوع تک رسائی منسوخ کر دیتے ہیں جو اسے اپنی بنیادی فعالیت کے لیے استعمال نہیں کرتیں۔ اس کا مطلب ہے کہ ڈویلپر کو درخواست کو واضح طور پر جواز فراہم کرنا ہوگا اور ان لوگوں کے لیے متبادل میکانزم پیش کرنا ہوگا جنہوں نے Location Permission سے انکار کیا۔
یورپ میں GDPR اور روس میں وفاقی قانون 152-FZ مقام کے ڈیٹا کی پروسیسنگ کے لیے باخبر رضامندی حاصل کرنے کی ضرورت رکھتے ہیں۔ ایپلی کیشن کو نہ صرف سسٹم ڈائیلاگ کے ذریعے اجازت مانگنی چاہیے بلکہ ڈیٹا اکٹھا کرنے کے مقاصد کے بارے میں علیحدہ نوٹیفکیشن بھی فراہم کرنا چاہیے۔ ان تقاضوں کی خلاف ورزی پر 20 ملین یورو یا کمپنی کے سالانہ کاروبار کے 4% تک جرمانہ ہو سکتا ہے۔
اگر ایپلی کیشن Location Permission کی درخواست نہیں کرتی یا صارف رسائی سے انکار کرتا ہے، تو ڈویلپر کو متبادل منظر نامہ فراہم کرنا ہوگا۔ نقشہ ایپلی کیشن کے لیے، یہ دستی پتہ اندراج ہو سکتا ہے؛ ڈیلیوری ایپ کے لیے — محفوظ کردہ پتوں کی فہرست سے انتخاب؛ موسم کی خدمت کے لیے — IP پتے کے ذریعے شہر کا تعین۔ Graceful degradation (نرم تنزلی) ایک معیاری عمل ہے جسے Google اور Apple تجویز کرتے ہیں۔
جغرافیائی محل وقوع تک رسائی کی سطحیں Android اور iOS پر مختلف ہیں، اگرچہ عمومی خیال ایک جیسا ہے: رسائی جتنی درست ہوگی، پلیٹ فارم ایپلی کیشن پر اتنے ہی سخت تقاضے عائد کرتا ہے۔
| رسائی کی سطح | Android | iOS |
|---|---|---|
| استعمال کے دوران | صرف جب ایپلی کیشن فعال ہو | When In Use — صرف ایپلی کیشن میں |
| پس منظر | Always — مسلسل، پس منظر میں بھی | Always — اضافی App Store جائزہ درکار |
| تخمینی | ACCESS_COARSE_LOCATION (500 میٹر تک درستگی) | Precision = Off آپشن کے ساتھ (iOS 14+) |
ACCESS_FINE_LOCATION کئی میٹر تک کی غلطی کے ساتھ درست GPS کوآرڈینیٹس تک رسائی فراہم کرتا ہے۔ مینی فیسٹ میں اس اجازت کا اعلان کرنے کے لیے مستقل android.permission.ACCESS_FINE_LOCATION استعمال کیا جاتا ہے۔ ACCESS_COARSE_LOCATION، اس کے برعکس، Wi-Fi اور سیلولر ٹاور ڈیٹا کی بنیاد پر 500 میٹر تک کی درستگی کے ساتھ تخمینی مقام فراہم کرتا ہے۔
When In Use ایپلی کیشن کو صرف اس وقت کوآرڈینیٹس حاصل کرنے کی اجازت دیتا ہے جب یہ اسکرین پر کھلی ہو۔ Always پس منظر میں بھی جغرافیائی محل وقوع تک رسائی فراہم کرتا ہے، لیکن لازمی App Store جائزہ کی ضرورت ہوتی ہے۔ iOS 14 سے شروع ہو کر، صارف Precision سوئچ کے ذریعے ہر ایپلی کیشن کے لیے درست مقام کا تعین علیحدہ طور پر غیر فعال کر سکتا ہے۔
Android پر Location Permission کی درخواست دو مراحل میں کی جاتی ہے: مینی فیسٹ میں اجازتوں کا اعلان اور کوڈ میں رن ٹائم درخواست۔ Android 6.0 (API 23) سے شروع ہو کر، تمام خطرناک اجازتیں انسٹالیشن کے دوران نہیں بلکہ ایپلی کیشن کے چلنے کے دوران مانگی جاتی ہیں۔
پہلا قدم AndroidManifest.xml فائل میں ضروری اجازتیں شامل کرنا ہے۔ درست اور تخمینی مقام کے تعین کے لیے مختلف مستقل استعمال کیے جاتے ہیں۔
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
مینی فیسٹ میں اعلان کے بعد، ایپلی کیشن کوڈ میں اجازت کی درخواست کا سسٹم ڈائیلاگ بلایا جانا چاہیے۔ آئیے Activity Result API استعمال کرتے ہوئے Kotlin میں ایک مثال دیکھتے ہیں۔
private val locationPermissionRequest =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
when {
permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
// اجازت دی گئی
getLocation()
}
permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
// صرف تخمینی مقام
getCoarseLocation()
}
else -> {
// صارف نے انکار کیا
showLocationExplanation()
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkLocationPermission()
}
اگر صارف رسائی سے انکار کرتا ہے، تو Android سسٹم خود بخود ڈائیلاگ کو دوبارہ دکھانے کی اجازت نہیں دیتا۔ ڈویلپر کو ابتدائی وضاحت دکھانے کے لیے shouldShowRequestPermissionRationale کال کرنا ہوگا۔ Never Ask Again فلیگ کے ساتھ بار بار انکار کی صورت میں، صارف کو سسٹم سیٹنگز پر بھیجنا چاہیے۔
private fun checkLocationPermission() {
when {
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED -> {
getLocation()
}
ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION) -> {
showRationaleDialog {
requestLocationPermission()
}
}
else -> {
openAppSettings()
}
}
}
iOS پر Location Permission کی درخواست میں Info.plist فائل میں خصوصی کیز شامل کرنا اور CLLocationManager کلاس کے طریقوں کو کال کرنا شامل ہے۔ Apple رازداری پر خصوصی توجہ دیتا ہے، لہذا درخواست ڈائیلاگ میں وضاحت کا متن جتنا ممکن ہو مخصوص ہونا چاہیے۔
iOS پر مقام کی درخواست کرنے کے لیے، Info.plist میں ایک یا دونوں کیز شامل کرنی ہوں گی: استعمال کے دوران رسائی کے لیے NSLocationWhenInUseUsageDescription اور پس منظر میں رسائی کے لیے NSLocationAlwaysAndWhenInUseUsageDescription۔ ہر کلید کی قدر ایک سٹرنگ ہے جو صارف کو ڈائیلاگ میں دکھائی جائے گی۔
<key>NSLocationWhenInUseUsageDescription</key>
<string>آپ کی ایپ کو نقشے پر قریبی پوائنٹس دکھانے کے لیے آپ کے مقام کی ضرورت ہے۔</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>راستے کو ٹریک کرنے کے لیے آپ کی ایپ کو پس منظر میں جغرافیائی محل وقوع کی رسائی درکار ہے۔</string>
Swift کوڈ میں، درخواست CLLocationManager کے ایک انسٹینس کے ذریعے کی جاتی ہے۔ مطلوبہ رسائی کی سطح کے مطابق، requestWhenInUseAuthorization یا requestAlwaysAuthorization کال کیا جاتا ہے۔
import CoreLocation
class LocationManager: NSObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
func requestLocationAccess() {
manager.delegate = self
manager.requestWhenInUseAuthorization()
}
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
switch manager.authorizationStatus {
case .authorizedWhenInUse, .authorizedAlways:
startLocationUpdates()
case .denied, .restricted:
showSettingsAlert()
case .notDetermined:
break
}
}
}
Android کے برعکس، iOS ڈویلپر کو shouldShowRequestPermissionRationale چیک کرنے کا کوئی طریقہ فراہم نہیں کرتا۔ سسٹم خود فیصلہ کرتا ہے کہ وضاحت کب دکھانی ہے۔ مزید برآں، iOS پر صرف سسٹم سیٹنگز کے ذریعے اجازت تبدیل کر سکتا ہے — ایپلی کیشن صارف کے فیصلہ کرنے کے بعد سسٹم ڈائیلاگ دوبارہ نہیں دکھا سکتی۔ RequestAlwaysAuthorization پہلے When In Use کی درخواست کرتا ہے، اور پھر پہلی رضامندی ملنے کے بعد، پس منظر میں رسائی کے لیے علیحدہ ڈائیلاگ۔
Location Permission کے ساتھ کام کرنے کے بہترین طریقے صارف کے انکار کو کم کرنے اور ایپ سٹور کی ضروریات کو پورا کرنے میں مدد دیتے ہیں۔ Google اور Apple نے سفارشات شائع کی ہیں جن کی پیروی سے ایپلی کیشن کی منظوری کا امکان بڑھ جاتا ہے۔
ایپلی کیشن شروع ہوتے ہی Location Permission کی درخواست کا ڈائیلاگ نہ دکھائیں۔ صارف جس نے ابھی ایپلی کیشن کھولی ہے، ابھی تک نہیں سمجھتا کہ اسے جغرافیائی محل وقوع تک رسائی کیوں دینی چاہیے۔ Contextual request کا مطلب ہے کہ ڈائیلاگ اس لمحے ظاہر ہوتا ہے جب صارف کو واقعی کسی ایسی خصوصیت کی ضرورت ہوتی ہے جس کے لیے اجازت درکار ہو۔ مثال کے طور پر، “قریب ترین اسٹور تلاش کریں” بٹن پر کلک کرنے پر۔
سسٹم ڈائیلاگ سے پہلے، اپنی خود کی وضاحت اسکرین (pre-permission screen) دکھائیں۔ اس پر بتائیں کہ ایپلی کیشن کو جغرافیائی محل وقوع کی ضرورت کیوں ہے، کون سا ڈیٹا اکٹھا کیا جاتا ہے اور اسے کیسے استعمال کیا جائے گا۔ صارف کے آپ کی اسکرین پر “اجازت دیں” پر کلک کرنے کے بعد، سسٹم ڈائیلاگ دکھائیں۔ Appsflyer (2024) کے مطابق، یہ طریقہ منظوری کی شرح کو 25-35% تک بڑھاتا ہے۔
پس منظر میں جغرافیائی محل وقوع تک رسائی صرف ان ایپلی کیشنز کے لیے ضروری ہے جو پس منظر میں کام کرتی ہیں: نیویگیٹرز، سرگرمی ٹریکرز، ڈیلیوری ایپلی کیشنز۔ اگر آپ کی ایپلی کیشن کو صرف اسکرین کھلی ہونے پر کوآرڈینیٹس کی ضرورت ہے، تو When In Use کی درخواست کریں۔ App Store ایپلی کیشن کو مسترد کر دے گا اگر Always فعالی طور پر جائز نہیں ہے۔ Android پر، پس منظر میں رسائی ACCESS_BACKGROUND_LOCATION اجازت کے ذریعے اضافی طور پر منظم کی جاتی ہے۔
اکثر پوچھے گئے سوالات
ایپلی کیشن کو انکار کو صحیح طریقے سے ہینڈل کرنا ہوگا اور متبادل منظر نامہ پیش کرنا ہوگا۔ مثال کے طور پر، دستی پتہ اندراج یا IP پتے کے ذریعے شہر کا تعین۔ سسٹم ڈائیلاگ دوبارہ نہیں دکھایا جاتا — صارف کو سیٹنگز پر بھیجنا ضروری ہے۔
تکنیکی طور پر، ہاں — سسٹم ڈائیلاگ بغیر پیشگی اسکرین کے بلایا جا سکتا ہے۔ تاہم، بغیر وضاحت کے منظوری کی شرح 30-40% ہے، جبکہ پیشگی اسکرین کے ساتھ 60-75% ہے۔ Apple اور Google ہمیشہ درخواست کی وجہ بتانے کی سفارش کرتے ہیں۔
Manifest.permission.ACCESS_FINE_LOCATION مستقل کے ساتھ ContextCompat.checkSelfPermission استعمال کریں۔ طریقہ PERMISSION_GRANTED یا PERMISSION_DENIED لوٹاتا ہے، جو سسٹم ڈائیلاگ کو کال کیے بغیر موجودہ حیثیت کا تعین کرنے کی اجازت دیتا ہے۔
ACCESS_FINE_LOCATION 3-10 میٹر کی غلطی کے ساتھ درست GPS کوآرڈینیٹس تک رسائی فراہم کرتا ہے۔ ACCESS_COARSE_LOCATION Wi-Fi اور سیلولر ٹاورز کی بنیاد پر 500 میٹر تک کی درستگی کے ساتھ تخمینی مقام فراہم کرتا ہے۔ Android 12+ پر، ڈویلپر ایک ساتھ دونوں اجازتوں کی درخواست کر سکتا ہے۔
Android پر، BLE آلات کو اسکین کرنے کے لیے ACCESS_FINE_LOCATION یا ACCESS_COARSE_LOCATION ضروری ہے کیونکہ BLE سگنلز مقام کی مثلث بندی کے لیے استعمال ہو سکتے ہیں۔ iOS پر، BLE کے لیے صرف Bluetooth اجازت کافی ہے — Location Permission کی ضرورت نہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں