Entitlements ڈیجیٹل حقوق اور اجازتیں ہیں جو کوڈ سائننگ مرحلے کے دوران ایپلیکیشن کو تفویض کی جاتی ہیں اور Apple آپریٹنگ سسٹم کی محفوظ خصوصیات تک رسائی کا تعین کرتی ہیں۔ صارف کی اجازتوں کے برعکس، Entitlements کو سسٹم کے ذریعے ایپلیکیشن لانچ ہونے پر چیک کیا جاتا ہے اور صارف انہیں تبدیل نہیں کر سکتا۔ Apple ڈویلپر دستاویزات (2025) کے مطابق، iCloud، Push Notifications اور App Groups کے استعمال کے لیے Entitlements کی درست ترتیب لازمی ہے۔ Entitlements iOS اور macOS کے سیکیورٹی ماڈل کا ایک اہم عنصر ہیں۔
اہم نکات
Entitlements (انگریزی سے ترجمہ «حقوق») کلید-قدر کے جوڑے ہیں جو بلڈ کے وقت ایپلیکیشن کے کوڈ دستخط میں شامل کیے جاتے ہیں اور تعین کرتے ہیں کہ ایپلیکیشن کن سسٹم کی صلاحیتوں اور ڈیٹا تک رسائی حاصل کر سکتی ہے۔ iOS SDK کے متعارف ہونے کے بعد سے Entitlements Apple کے سیکیورٹی ماڈل میں شامل ہیں اور App Store کے ذریعے تقسیم کردہ تمام ایپلیکیشنز کے لیے لازمی ہیں۔
Entitlements کا تصور Android کی روایتی اجازتوں سے مختلف ہے۔ Android کی اجازتیں کسی خصوصیت کے پہلے استعمال کے وقت صارف سے درخواست کی جاتی ہیں، جبکہ iOS میں Entitlements کو ڈیجیٹل دستخط کی بنیاد پر ایپلیکیشن لانچ ہونے پر سسٹم کے ذریعے تصدیق کیا جاتا ہے۔ صارف کسی entitlement کو منسوخ یا تبدیل نہیں کر سکتا — یہ حق App Store Connect کے ذریعے ڈویلپر کو دیا جاتا ہے اور پروویژننگ پروفائل میں شامل کیا جاتا ہے۔
ہر entitlement کا سختی سے متعین مقصد اور فارمیٹ ہوتا ہے۔ مثال کے طور پر، com.apple.security.application-groups ایک ہی ڈویلپر کی ایپلیکیشنز کے ایک سیٹ کو مشترکہ کنٹینر تک رسائی کی اجازت دیتا ہے، جبکہ aps-environment Push Notifications سپورٹ کو فعال کرتا ہے۔ Apple App Review کے عمل کے دوران دستی طور پر entitlements کی درخواستوں کا جائزہ لیتا ہے، جو حقوق کے غلط استعمال کو روکتا ہے۔
Entitlements کو فعالی مقصد کے مطابق کئی اقسام میں درجہ بندی کیا جاتا ہے۔ سسٹم سروسز — iCloud، Push Notifications، Siri۔ سیکیورٹی اور ڈیٹا — Keychain Access Groups، App Groups، Data Protection۔ نیٹ ورک اور مواصلات — Multipath TCP، VPN، Hotspot Configuration۔ ہارڈویئر صلاحیتیں — کیمرہ، مائیکروفون، Bluetooth (متعلقہ capabilities کے ذریعے)۔
Xcode متعلقہ entitlements کو Capabilities میں گروپ کرتا ہے — Signing & Capabilities ٹیب پر اعلیٰ سطح کے سوئچ۔ Capability کو فعال کرنے سے ضروری entitlements خود بخود .entitlements فائل میں شامل ہو جاتی ہیں۔ مثال کے طور پر، Push Notifications capability کو فعال کرنے سے aps-environment entitlement development یا production کی قدر کے ساتھ شامل ہوتی ہے، جبکہ iCloud کو فعال کرنے سے CloudKit اور Key-Value اسٹوریج کے لیے entitlements کا ایک سیٹ شامل ہوتا ہے۔
کچھ capabilities کے لیے Apple Developer پورٹل پر اضافی ترتیب کی ضرورت ہوتی ہے۔ مثال کے طور پر، App Groups کے لیے پورٹل پر گروپ شناخت کنندہ رجسٹر کرنا ضروری ہے، جس کے بعد یہ Xcode میں انتخاب کے لیے دستیاب ہو جاتا ہے۔ Push Notifications کے لیے APNs کلید یا سرٹیفکیٹ بنانا ضروری ہے۔ ان ابتدائی مراحل کے بغیر، درست .entitlements فائل ہونے کے باوجود entitlement کام نہیں کرے گی۔
Entitlement com.apple.security.application-groups ایک ہی ڈویلپر کی متعدد ایپلیکیشنز کو فائل سسٹم پر مشترکہ کنٹینر شیئر کرنے کی اجازت دیتا ہے۔ یہ مرکزی ایپلیکیشن اور ایکسٹینشنز (Widget، Watch App، Share Extension) کے درمیان ڈیٹا شیئر کرنے کے لیے استعمال ہوتا ہے۔ ایک ہی گروپ کی تمام ایپلیکیشنز مشترکہ /Library/Group Containers/ ڈائریکٹری میں فائلیں پڑھ اور لکھ سکتی ہیں۔
Keychain Access Groups (کلید keychain-access-groups) ایک اور اہم entitlement ہے جو ایک ہی گروپ کی ایپلیکیشنز کو Keychain آئٹمز تک مشترکہ رسائی کی اجازت دیتا ہے۔ یہ سنگل سائن آن کو لاگو کرنے کے لیے اہم ہے: صارف ایک ایپلیکیشن میں لاگ ان کرتا ہے اور پاس ورڈ دوبارہ درج کیے بغیر دوسری ایپلیکیشن میں خود بخود اسی اکاؤنٹ تک رسائی حاصل کر لیتا ہے۔
Entitlements کی ترتیب Xcode میں ٹارگٹ سیٹنگز کے Signing & Capabilities ٹیب پر کی جاتی ہے۔ ڈویلپر فہرست سے مطلوبہ Capabilities منتخب کرتا ہے، اور Xcode خود بخود .entitlements فائل بناتا یا اپ ڈیٹ کرتا ہے۔ یہ فائل پروجیکٹ میں plist ساخت کے ساتھ XML فارمیٹ میں محفوظ کی جاتی ہے اور اس ٹارگٹ کے لیے تمام entitlement کلیدوں پر مشتمل ہوتی ہے۔
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.example.shared</string>
</array>
<key>aps-environment</key>
<string>development</string>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.example.keychain</string>
</array>
</dict>
</plist>
دستی طور پر entitlement فائل بناتے وقت کلید کے فارمیٹ اور سابقہ لاحقوں پر عمل کرنا ضروری ہے۔ Apple کے entitlements معکوس ڈومین اسٹائل (com.apple.*) استعمال کرتے ہیں۔ اپنے مقاصد کے لیے کسٹم entitlements بھی ممکن ہیں، لیکن انہیں ڈویلپر پورٹل پر رجسٹر کرنا ضروری ہے۔ Xcode تمام معیاری entitlement کلیدوں کے لیے خودکار تکمیل فراہم کرتا ہے۔
Entitlements کی ڈیبگنگ کے لیے macOS ٹرمینل میں codesign کمانڈ استعمال کریں۔ کمانڈ codesign -d --entitlements :- <ایپلیکیشن_کا_پتہ> ان تمام entitlements کو دکھاتی ہے جن کے ساتھ ایپلیکیشن دستخط شدہ ہے۔ یہ مسائل کی تشخیص کے لیے مفید ہے: اگر آؤٹ پٹ میں کوئی entitlement غائب ہے تو ایپلیکیشن Xcode کی ترتیبات سے قطع نظر متعلقہ فنکشن تک رسائی حاصل نہیں کرے گی۔
اگرچہ Capabilities کو فعال کرنے پر Xcode خود بخود entitlement فائل تیار کرتا ہے، تجربہ کار ڈویلپر باریک ترتیب کے لیے اسے اکثر دستی طور پر بناتے یا ترمیم کرتے ہیں۔ فائل کا ایکسٹینشن .entitlements اور فارمیٹ plist (XML) ہے۔ اس میں کسٹم entitlement کلیدیں شامل کی جا سکتی ہیں جو Xcode انٹرفیس میں موجود نہیں ہیں، یا مختلف capabilities کے entitlements کو ایک فائل میں یکجا کیا جا سکتا ہے۔
دستی طور پر ترمیم کرتے وقت XML کی نحوی درستگی کو یقینی بنانا ضروری ہے۔ plist ساخت میں خرابی کی وجہ سے دستخط کرتے وقت entitlements لاگو نہیں ہوں گی۔ Xcode مرتب کرتے وقت .entitlements فائل کو چیک کرتا ہے اور غلط فارمیٹ ہونے پر خرابی دکھاتا ہے۔ متعدد ٹارگٹس اور ایکسٹینشنز والے پیچیدہ پروجیکٹس کے لیے، مشترکہ entitlement کلیدوں کو الگ فائلوں میں محفوظ کرنے اور Build Settings کے ذریعے درآمد کرنے کی سفارش کی جاتی ہے۔
// cli: checking entitlements of an installed application
codesign -d --entitlements :- /Applications/Safari.app
// Example output contains a list of active entitlements
<dict>
<key>com.apple.security.ts.apple-wifi</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
Entitlements Apple کے سیکیورٹی ماڈل میں اہم کردار ادا کرتے ہیں۔ چونکہ entitlements ایپلیکیشن کے ڈیجیٹل دستخط کا حصہ ہیں، کوڈ پر دوبارہ دستخط کیے بغیر ان کے ساتھ چھیڑ چھاڑ ناممکن ہے۔ Apple کئی سطحوں پر entitlements کو چیک کرتا ہے: بلڈ کے دوران، Xcode entitlements کو قابل عمل فائل کے ساتھ دستخط کرتا ہے؛ انسٹالیشن کے دوران، سسٹم دستخط کی سالمیت چیک کرتا ہے؛ لانچ کے وقت، entitlements کی دوبارہ تصدیق کرتا ہے۔
ایک اہم سیکیورٹی ضرورت کم سے کم entitlement کا اصول ہے۔ ڈویلپر کو صرف وہی entitlements شامل کرنے چاہئیں جو حقیقت میں ایپلیکیشن میں استعمال ہوتی ہیں۔ غیر ضروری entitlements حملے کی سطح کو بڑھاتی ہیں اور App Review میں ایپلیکیشن کو مسترد کرنے کا سبب بن سکتی ہیں۔ Apple واضح طور پر چیک کرتا ہے کہ entitlements ایپلیکیشن کی فعالیت سے میل کھاتی ہیں۔
کچھ entitlements حساس سمجھی جاتی ہیں اور انہیں Apple کی اضافی منظوری درکار ہوتی ہے۔ ان میں شامل ہیں: com.apple.developer.healthkit (HealthKit)، com.apple.developer.passkit (Wallet)، com.apple.developer.authentication-services.authentication (Sign in with Apple) اور com.apple.developer.nfc.readersession.formats (NFC)。 یہ entitlements حاصل کرنے کے لیے، App Review کے عمل میں ان کی ضرورت کو ثابت کرنا ضروری ہے۔
Entitlements کے ساتھ کام کرتے وقت iOS اور macOS کے درمیان فرق پر غور کرنا ضروری ہے۔ macOS کی ڈیسک ٹاپ ایپلیکیشنز (Sandboxed) کے پاس iOS کے مقابلے میں entitlements کا وسیع سیٹ ہوتا ہے۔ مثال کے طور پر، com.apple.security.temporary-exception.* entitlement مخصوص کارروائیوں کے لیے عارضی طور پر سینڈ باکس کو نظرانداز کرنے کی اجازت دیتی ہے — iOS پر ایسی entitlements مکمل طور پر غائب ہیں۔
Entitlements کا پروویژننگ پروفائلز سے گہرا تعلق ہے۔ پروویژننگ پروفائل ایک فائل ہے جو ڈویلپر سرٹیفکیٹ، اجازت شدہ آلات کی فہرست اور ایک مخصوص ایپلیکیشن کے لیے entitlements کے سیٹ کو جوڑتی ہے۔ ایپلیکیشن انسٹال کرتے وقت، سسٹم کوڈ میں موجود entitlements کا پروویژننگ پروفائل میں موجود entitlements سے موازنہ کرتا ہے۔ اگر کوئی entitlement کوڈ میں موجود ہے لیکن پروفائل میں غائب ہے تو ایپلیکیشن متعلقہ فنکشن تک رسائی حاصل نہیں کرے گی۔
Entitlements کے ساتھ مسائل کی تشخیص کے لیے پہلے پروویژننگ پروفائل چیک کریں۔ Xcode Apple Developer پورٹل پر منتخب کردہ capabilities کی بنیاد پر خود بخود پروفائل تیار کرتا ہے۔ اگر Xcode میں capability شامل کی گئی ہے لیکن پورٹل پر فعال نہیں ہے تو محفوظ فنکشن استعمال کرنے کی کوشش کرنے پر ایپلیکیشن دستخط کی خرابی کے ساتھ کریش ہو جائے گی۔
iOS ڈویلپمنٹ میں سب سے زیادہ استعمال ہونے والے entitlements پر نظر ڈالتے ہیں۔ aps-environment (Push Notifications) — push اطلاعات بھیجنے کے لیے لازمی۔ com.apple.developer.ubiquity-container-identifiers (iCloud) — CloudKit کے ذریعے ڈیٹا ہم آہنگی کے لیے۔ com.apple.security.application-groups — ایپلیکیشنز اور ایکسٹینشنز کے درمیان ڈیٹا شیئر کرنے کے لیے۔ com.apple.developer.associated-domains — Universal Links اور Handoff کے لیے۔
ان میں سے ہر ایک entitlement کے لیے سخت ترتیبی طریقہ کار ہے۔ Push Notifications کے لیے Apple Developer پورٹل پر APNs کلید بنانا اور Xcode میں capability کو فعال کرنا ضروری ہے۔ اس کے بعد entitlement خود بخود .entitlements فائل میں سیٹ ہو جاتی ہے۔ iCloud کے لیے پورٹل پر کنٹینر ترتیب دینا اور Xcode میں ڈراپ ڈاؤن فہرست سے اسے منتخب کرنا ضروری ہے۔
Associated Domains — ایک entitlement جو ایپلیکیشن کو ویب ڈومین سے جوڑتی ہے۔ یہ Universal Links (گہرے لنکس جو براہ راست ایپلیکیشن میں کھلتے ہیں) اور Handoff (دوسرے Apple آلے پر کام جاری رکھنا) کے لیے استعمال ہوتی ہے۔ entitlement کی قدر میں applinks:example.com فارمیٹ میں سٹرنگز کی ایک صف ہوتی ہے۔ اس کے لیے سرور پر apple-app-site-association فائل رکھنا ضروری ہے۔
مقبول entitlements اور ان کے مقاصد کا جدول:
| Entitlement کلید | مقصد | جائزہ درکار |
|---|---|---|
| aps-environment | Push اطلاعات | نہیں |
| com.apple.developer.ubiquity-* | iCloud ہم آہنگی | نہیں |
| application-groups | مشترکہ ایپ کنٹینر | نہیں |
| com.apple.developer.healthkit | HealthKit ڈیٹا | ہاں |
| com.apple.developer.nfc.* | NFC ٹیگ پڑھنا | ہاں |
| associated-domains | Universal Links | نہیں |
اکثر پوچھے جانے والے سوالات
Entitlements مستقل حقوق ہیں جو ایپلیکیشن کے دستخط میں شامل ہوتے ہیں اور سسٹم کے ذریعے لانچ کے وقت تصدیق کیے جاتے ہیں۔ اجازتیں متغیر اختیارات ہیں جو رن ٹائم پر صارف سے درخواست کی جاتی ہیں (کیمرہ، جغرافیائی محل وقوع)۔
macOS ٹرمینل میں codesign -d --entitlements کمانڈ استعمال کریں۔ App Store ایپلیکیشنز کے لیے، ProvisionQL یوٹیلیٹی یا Xcode Organizer کے ذریعے entitlements چیک کی جاتی ہیں۔
Entitlements تبدیل کرنے کے لیے نئی بلڈ اور ایپلیکیشن پر دوبارہ دستخط درکار ہیں۔ اگر entitlement کو Apple کی منظوری درکار ہے تو آپ کو دوبارہ App Review سے گزرنا ہوگا۔ دوبارہ دستخط کیے بغیر، entitlements تبدیل کرنا ناممکن ہے۔
.entitlements فائل plist فارمیٹ میں ایک XML دستاویز ہے جو Xcode پروجیکٹ میں محفوظ ہوتی ہے۔ اس میں ساختہ شکل میں ایپلیکیشن کے تمام entitlements کی فہرست ہوتی ہے اور یہ قابل عمل فائل کے ساتھ دستخط شدہ ہوتی ہے۔
Capabilities Xcode میں Signing & Capabilities ٹیب پر اعلیٰ سطح کے سوئچ ہیں۔ capability کو فعال کرنے سے متعلقہ entitlements خود بخود .entitlements فائل میں شامل ہو جاتی ہیں اور پروویژننگ پروفائل ترتیب پاتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں