iOS डेवलपमेंट में Entitlements: यह क्या है, कितने प्रकार के होते हैं और कैसे कॉन्फ़िगर करें

लेखक: IT Sectr प्रकाशित: 2026-05-18 पढ़ने का समय: 8 मिनट

Entitlements डिजिटल अधिकार और अनुमतियाँ हैं जो कोड साइनिंग चरण के दौरान एप्लिकेशन को प्रदान की जाती हैं और Apple ऑपरेटिंग सिस्टम की संरक्षित सुविधाओं तक पहुँच निर्धारित करती हैं। उपयोगकर्ता अनुमतियों के विपरीत, Entitlements को सिस्टम द्वारा एप्लिकेशन लॉन्च के समय जांचा जाता है और उपयोगकर्ता द्वारा बदला नहीं जा सकता। Apple डेवलपर दस्तावेज़ीकरण (2025) के अनुसार, iCloud, Push Notifications और App Groups के उपयोग के लिए Entitlements का सही कॉन्फ़िगरेशन अनिवार्य है। Entitlements iOS और macOS सुरक्षा मॉडल का एक प्रमुख तत्व हैं।

मुख्य बिंदु

  • Entitlements डिजिटल अनुमतियाँ हैं जो एप्लिकेशन के हस्ताक्षर में एम्बेड की जाती हैं और iOS और macOS की संरक्षित सुविधाओं तक पहुँच निर्धारित करती हैं।
  • अनुमतियों से अंतर — Entitlements को सिस्टम द्वारा लॉन्च के समय जांचा जाता है और उपयोगकर्ता से अनुरोध नहीं किया जाता; अनुमतियाँ रनटाइम पर सिस्टम डायलॉग के माध्यम से अनुरोध की जाती हैं।
  • Capabilities — Xcode Entitlements को Capabilities में समूहित करता है: Push Notifications, iCloud, App Groups, In-App Purchase और अन्य।
  • Entitlements फ़ाइल — (.entitlements) Xcode प्रोजेक्ट में एक XML फ़ाइल है जिसमें कुंजी-मान प्रारूप में अधिकारों की सूची होती है, जो Apple द्वारा हस्ताक्षरित होती है।
  • सुरक्षा — कोड साइनिंग के दौरान entitlements की जाँच की जाती है; स्थापित एप्लिकेशन में entitlements के साथ छेड़छाड़ डिजिटल हस्ताक्षर को तोड़ देती है और लॉन्च को अवरुद्ध कर देती है।

Entitlements क्या हैं?

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 अनुरोधों की समीक्षा करता है, जो अधिकारों के दुरुपयोग को रोकता है।

iOS में Entitlements के प्रकार

Entitlements को कार्यात्मक उद्देश्य के अनुसार कई श्रेणियों में वर्गीकृत किया जाता है। सिस्टम सेवाएँ — iCloud, Push Notifications, Siri। सुरक्षा और डेटा — Keychain Access Groups, App Groups, Data Protection। नेटवर्क और संचार — Multipath TCP, VPN, Hotspot Configuration। हार्डवेयर क्षमताएँ — कैमरा, माइक्रोफ़ोन, Bluetooth (संबंधित capabilities के माध्यम से)।

Capabilities और सेवा Entitlements

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 काम नहीं करेगा।

App Groups और Keychain Access

Entitlement com.apple.security.application-groups एक ही डेवलपर के कई एप्लिकेशन को फ़ाइल सिस्टम पर एक सामान्य कंटेनर साझा करने की अनुमति देता है। इसका उपयोग मुख्य एप्लिकेशन और एक्सटेंशन (Widget, Watch App, Share Extension) के बीच डेटा साझा करने के लिए किया जाता है। एक ही समूह के सभी एप्लिकेशन साझा /Library/Group Containers/ निर्देशिका में फ़ाइलें पढ़ और लिख सकते हैं।

Keychain Access Groups (कुंजी keychain-access-groups) एक और महत्वपूर्ण entitlement है जो एक ही समूह के एप्लिकेशन को Keychain आइटम तक साझा पहुँच की अनुमति देता है। यह एकल साइन-ऑन लागू करने के लिए महत्वपूर्ण है: उपयोगकर्ता एक एप्लिकेशन में लॉग इन करता है और पासवर्ड दोबारा दर्ज किए बिना दूसरे एप्लिकेशन में उसी खाते तक स्वचालित रूप से पहुँच प्राप्त करता है।

Entitlements कैसे कॉन्फ़िगर करें

Entitlements का कॉन्फ़िगरेशन Xcode में टार्गेट सेटिंग्स के Signing & Capabilities टैब पर किया जाता है। डेवलपर सूची से आवश्यक Capabilities चुनता है, और Xcode स्वचालित रूप से .entitlements फ़ाइल बनाता या अपडेट करता है। यह फ़ाइल प्रोजेक्ट में plist संरचना के साथ XML प्रारूप में संग्रहीत होती है और इस टार्गेट के लिए सभी entitlement कुंजियाँ रखती है।

objective-c
<?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 सेटिंग्स की परवाह किए बिना संबंधित फ़ंक्शन तक पहुँच प्राप्त नहीं करेगा।

मैन्युअल रूप से Entitlement फ़ाइल बनाना

हालाँकि Capabilities सक्षम करने पर Xcode स्वचालित रूप से entitlement फ़ाइल उत्पन्न करता है, अनुभवी डेवलपर अक्सर बारीक ट्यूनिंग के लिए इसे मैन्युअल रूप से बनाते या संपादित करते हैं। फ़ाइल का एक्सटेंशन .entitlements और प्रारूप plist (XML) है। इसमें कस्टम entitlement कुंजियाँ जोड़ी जा सकती हैं जो Xcode इंटरफ़ेस में मौजूद नहीं हैं, या विभिन्न capabilities के entitlements को एक फ़ाइल में जोड़ा जा सकता है।

मैन्युअल रूप से संपादित करते समय XML की वाक्य रचनात्मक शुद्धता सुनिश्चित करना महत्वपूर्ण है। plist संरचना में त्रुटि के कारण हस्ताक्षर करते समय entitlements लागू नहीं होंगे। Xcode कंपाइल समय पर .entitlements फ़ाइल की जाँच करता है और गलत प्रारूप होने पर त्रुटि प्रदर्शित करता है। कई टार्गेट और एक्सटेंशन वाले जटिल प्रोजेक्ट के लिए, सामान्य entitlement कुंजियों को अलग फ़ाइलों में संग्रहीत करने और Build Settings के माध्यम से आयात करने की अनुशंसा की जाती है।

cpp
// 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 और एप्लिकेशन सुरक्षा

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 का व्यापक सेट होता है। उदाहरण के लिए, entitlement com.apple.security.temporary-exception.* कुछ कार्यों के लिए अस्थायी रूप से सैंडबॉक्स को बायपास करने की अनुमति देता है — iOS पर ऐसे entitlements पूरी तरह से अनुपस्थित हैं।

Entitlements और प्रोविज़निंग प्रोफ़ाइल

Entitlements प्रोविज़निंग प्रोफ़ाइल से निकटता से जुड़े होते हैं। प्रोविज़निंग प्रोफ़ाइल एक फ़ाइल है जो डेवलपर प्रमाणपत्र, अनुमत उपकरणों की सूची और किसी विशिष्ट एप्लिकेशन के लिए entitlements के सेट को जोड़ती है। एप्लिकेशन स्थापित करते समय, सिस्टम कोड में entitlements की तुलना प्रोविज़निंग प्रोफ़ाइल में entitlements से करता है। यदि कोई entitlement कोड में मौजूद है लेकिन प्रोफ़ाइल में अनुपस्थित है, तो एप्लिकेशन संबंधित फ़ंक्शन तक पहुँच प्राप्त नहीं करेगा।

Entitlements के साथ समस्याओं के निदान के लिए पहले प्रोविज़निंग प्रोफ़ाइल की जाँच करें। Xcode Apple Developer पोर्टल पर चयनित capabilities के आधार पर स्वचालित रूप से प्रोफ़ाइल उत्पन्न करता है। यदि Xcode में capability जोड़ी गई है लेकिन पोर्टल पर सक्रिय नहीं है, तो संरक्षित फ़ंक्शन का उपयोग करने का प्रयास करने पर एप्लिकेशन हस्ताक्षर त्रुटि के साथ क्रैश हो जाएगा।

सामान्यतः उपयोग किए जाने वाले Entitlements

आइए 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-environmentPush सूचनाएँनहीं
com.apple.developer.ubiquity-*iCloud सिंक्रोनाइज़ेशननहीं
application-groupsसाझा एप्लिकेशन कंटेनरनहीं
com.apple.developer.healthkitHealthKit डेटाहाँ
com.apple.developer.nfc.*NFC टैग रीडिंगहाँ
associated-domainsUniversal Linksनहीं

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

iOS में Entitlements अनुमतियों से कैसे भिन्न हैं?

Entitlements स्थिर अधिकार हैं जो एप्लिकेशन के हस्ताक्षर में एम्बेडेड होते हैं और सिस्टम द्वारा लॉन्च के समय सत्यापित किए जाते हैं। अनुमतियाँ गतिशील अनुमतियाँ हैं जो रनटाइम पर उपयोगकर्ता से अनुरोध की जाती हैं (कैमरा, भू-स्थान)।

स्थापित एप्लिकेशन के Entitlements कैसे जाँचें?

macOS टर्मिनल में codesign -d --entitlements कमांड का उपयोग करें। App Store एप्लिकेशन के लिए, ProvisionQL उपयोगिता या Xcode Organizer के माध्यम से entitlements की जाँच की जाती है।

क्या प्रकाशन के बाद Entitlements बदले जा सकते हैं?

Entitlements बदलने के लिए नए बिल्ड और एप्लिकेशन पर फिर से हस्ताक्षर करने की आवश्यकता होती है। यदि entitlement के लिए Apple की अनुमति आवश्यक है, तो आपको फिर से App Review से गुज़रना होगा। पुनः हस्ताक्षर किए बिना, entitlements बदलना असंभव है।

Xcode में Entitlements फ़ाइल क्या है?

.entitlements फ़ाइल plist प्रारूप में एक XML दस्तावेज़ है जो Xcode प्रोजेक्ट में संग्रहीत होती है। इसमें संरचित रूप में एप्लिकेशन के सभी entitlements की सूची होती है और यह निष्पादन योग्य फ़ाइल के साथ हस्ताक्षरित होती है।

Xcode में Capabilities क्या हैं?

Capabilities Xcode में Signing & Capabilities टैब पर उच्च-स्तरीय स्विच हैं। Capability सक्षम करने पर स्वचालित रूप से .entitlements फ़ाइल में संबंधित entitlements जुड़ जाते हैं और प्रोविज़निंग प्रोफ़ाइल कॉन्फ़िगर हो जाती है।

सारांश

  • Entitlements iOS और macOS की संरक्षित सिस्टम सुविधाओं का उपयोग करने के लिए एप्लिकेशन के डिजिटल अधिकार हैं, जो कोड हस्ताक्षर में एम्बेडेड होते हैं।
  • अनुमतियों से अंतर — entitlements को सिस्टम द्वारा लॉन्च के समय हस्ताक्षर के आधार पर सत्यापित किया जाता है, उपयोगकर्ता से अनुरोध नहीं किया जाता और रद्द नहीं किया जा सकता।
  • Capabilities Push Notifications, iCloud, App Groups, In-App Purchase और अन्य सुविधाओं के लिए entitlements के Xcode समूह हैं।
  • जाँच — स्थापित एप्लिकेशन अधिकारों के निदान के लिए macOS टर्मिनल में codesign कमांड के माध्यम से।
  • संवेदनशील entitlements — HealthKit, NFC, PassKit को App Review के माध्यम से Apple की अतिरिक्त अनुमति की आवश्यकता होती है।
  • न्यूनतम अधिकार सिद्धांत — हमले की सतह को कम करने और समीक्षा पास करने के लिए केवल आवश्यक entitlements शामिल करें।
  • सुरक्षा — entitlements डिजिटल हस्ताक्षर द्वारा संरक्षित हैं; पूरे एप्लिकेशन पर दोबारा हस्ताक्षर किए बिना छेड़छाड़ असंभव है।

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

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

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

यह भी पढ़ें