App Bundle ID — एक अनूठा एप्लिकेशन पहचानकर्ता है जो Apple और Google इकोसिस्टम में सॉफ़्टवेयर उत्पाद के रजिस्ट्रेशन, हस्ताक्षर और वितरण के लिए उपयोग किया जाता है। प्रत्येक ऐप को प्रोजेक्ट बनाते समय अपना Bundle ID मिलता है, और यह पहचानकर्ता पूरे जीवनचक्र में अपरिवर्तित रहता है। Apple Developer Documentation के अनुसार, Bundle ID का उपयोग सेवाओं, प्रमाणपत्रों और प्रोविज़निंग प्रोफ़ाइलों को बाँधने के लिए किया जाता है।
मुख्य बिंदु
Bundle Identifier एक स्ट्रिंग है जो ऑपरेटिंग सिस्टम और ऐप स्टोर में एप्लिकेशन की विशिष्ट रूप से पहचान करता है। iOS और macOS में इसे Bundle ID कहा जाता है, Android में — Package Name, हालाँकि कार्यात्मक रूप से दोनों एक ही भूमिका निभाते हैं: डिवाइस और स्टोर में ऐप की विशिष्टता सुनिश्चित करना।
ऑपरेटिंग सिस्टम डिवाइस पर ऐप्स को अलग करने के लिए Bundle ID का उपयोग करता है। समान पहचानकर्ता वाले दो ऐप एक साथ इंस्टॉल नहीं किए जा सकते — सिस्टम उन्हें एक ही उत्पाद मानता है। ऐप स्टोर प्रकाशन के दौरान Bundle ID की विशिष्टता की भी जाँच करते हैं।
Apple ने 2008 में iOS SDK के रिलीज़ के साथ Bundle ID पेश किया। रिवर्स डोमेन नोटेशन प्रारूप Java (पैकेज नामकरण परंपरा) से लिया गया था, जहाँ इसका उपयोग क्लास नामों के टकराव को रोकने के लिए किया जाता है। Google ने Android के लिए इस प्रथा को अपनाया, जिससे दोनों मोबाइल इकोसिस्टम में एकरूपता सुनिश्चित हुई।
| प्लेटफ़ॉर्म | फ़ील्ड नाम | उदाहरण |
|---|---|---|
| iOS/macOS | Bundle Identifier | com.example.myapp |
| Android | Package Name | com.example.myapp |
| watchOS | Bundle Identifier | com.example.myapp.watchkit |
| tvOS | Bundle Identifier | com.example.myapp.tvos |
Bundle ID में डॉट्स द्वारा अलग किए गए कई खंड होते हैं। पहला भाग डेवलपर या कंपनी का पहचानकर्ता है (com, org, net)। दूसरा कंपनी का डोमेन है (example, google, apple)। बाद के खंड ऐप नाम और प्लेटफ़ॉर्म निर्दिष्ट करते हैं।
एक सामान्य Bundle ID com.company.appname जैसा दिखता है। Apple वैश्विक विशिष्टता की गारंटी के लिए रिवर्स डोमेन नोटेशन का उपयोग करने की अनुशंसा करता है। यदि कंपनी के पास डोमेन नहीं है, तो ईमेल का उपयोग करने की अनुमति है: com.example.myapp या org.example.myapp।
Apple Wildcard Bundle ID — तारांकन वाला एक पहचानकर्ता टेम्पलेट समर्थन करता है: com.example.*। यह टेम्पलेट एक ही कंपनी के कई ऐप्स के लिए एक App ID का उपयोग करने की अनुमति देता है। Wildcard ID डेवलपमेंट के दौरान सुविधाजनक है, लेकिन प्रोडक्शन के लिए अनुशंसित नहीं है क्योंकि यह कुछ Apple सेवाओं के उपयोग को सीमित करता है।
वाइल्डकार्ड सीमाएँ: Push सूचनाएँ, CloudKit, In-App Purchase और Game Center को स्पष्ट (explicit) Bundle ID की आवश्यकता होती है। com.example.* टेम्पलेट का उपयोग करते समय, ये सेवाएँ अनुपलब्ध होती हैं। प्रोडक्शन ऐप्स के लिए, सभी Apple सेवाओं की पूर्ण कार्यक्षमता सुनिश्चित करने के लिए हमेशा explicit Bundle ID का उपयोग करें।
वाइल्डकार्ड के अलावा, Apple उपसर्ग पहचानकर्ता समर्थन करता है जो Apple Developer Program में रजिस्ट्रेशन पर डेवलपमेंट टीम को सौंपे जाते हैं। उपसर्ग (Team ID) स्वचालित रूप से सभी App ID और प्रोविज़निंग प्रोफ़ाइलों में जुड़ जाता है। दो अलग-अलग Team ID समान Bundle ID बना सकते हैं, लेकिन डिवाइस पर उन्हें अलग-अलग ऐप माना जाता है।
Bundle ID रजिस्ट्रेशन ऐप प्रकाशित करने से पहले एक अनिवार्य कदम है। Apple इकोसिस्टम में, रजिस्ट्रेशन Apple Developer Portal में Certificates, Identifiers & Profiles अनुभाग के माध्यम से किया जाता है। Google Play में, Bundle ID डेवलपर कंसोल में ऐप बनाते समय निर्दिष्ट किया जाता है।
Apple Developer पोर्टल पर, Identifiers अनुभाग चुनें, Register बटन पर क्लिक करें और App ID प्रकार निर्दिष्ट करें। सटीक Bundle ID नाम दर्ज करें और आवश्यक क्षमताएँ चुनें: Push Notifications, CloudKit, Sign in with Apple। रजिस्ट्रेशन के बाद, पहचानकर्ता प्रोविज़निंग प्रोफ़ाइल बनाने के लिए उपलब्ध हो जाता है।
// ऐप कोड में Bundle ID की जाँच
let bundleID = Bundle.main.bundleIdentifier
print("Current Bundle ID: \(bundleID ?? "unknown")")
// बिल्ड स्थितियों के लिए Bundle ID की जाँच
if bundleID == "com.example.app.production" {
// प्रोडक्शन कॉन्फ़िगरेशन
Analytics.shared.configure(.production)
}
Google Play Console को पूर्व Bundle ID रजिस्ट्रेशन की आवश्यकता नहीं है। पहचानकर्ता ऐप मॉड्यूल की build.gradle फ़ाइल में निर्दिष्ट किया जाता है और पूरे Google Play में अद्वितीय होना चाहिए। ऐप बनाने के बाद, Package Name बदलना असंभव है, इसलिए पहचानकर्ता को सावधानीपूर्वक चुनें और Google Play खोज के माध्यमसे इसकी विशिष्टता की जाँच करें। Google हटाए गए ऐप्स के पहचानकर्ता जारी नहीं करता, इसलिए एक बार लिया गया Bundle ID अन्य डेवलपर्स के लिए अनुपलब्ध रहता है।
App Store Connect में रजिस्टर करते समय, आपको पंजीकृत पहचानकर्ताओं के मौजूदा सेट में से एक Bundle ID निर्दिष्ट करना होगा। यदि पहचानकर्ता अभी तक Apple Developer पोर्टल पर पंजीकृत नहीं है, तो सिस्टम इसे स्वचालित रूप से बनाने की पेशकश करेगा। रजिस्ट्रेशन के बाद, Bundle ID टीम से बंध जाता है और Apple समर्थन से संपर्क किए बिना किसी अन्य डेवलपर खाते में स्थानांतरित नहीं किया जा सकता। प्रत्येक Bundle ID में विभिन्न वातावरणों के लिए कई प्रोविज़निंग प्रोफ़ाइल हो सकती हैं: Development, Ad Hoc, App Store।
एक्सटेंशन वाले iOS ऐप के लिए Bundle ID रजिस्टर करते समय, प्रत्येक घटक को अलग से रजिस्टर करना होगा। विजेट एक्सटेंशन, कीबोर्ड, Notification Service और Watch App के मुख्य से व्युत्पन्न अपने स्वयं के पहचानकर्ता होते हैं। App Store Connect App Record बनाते समय उन्हें समूहित करता है, जिससे सभी घटकों को एक ही ऐप के रूप में प्रकाशित किया जा सकता है।
Xcode में Bundle ID कॉन्फ़िगरेशन कई स्थानों पर किया जाता है: Info.plist, Build Settings और Signing & Capabilities। केंद्रीय फ़ील्ड ऐप टार्गेट में Bundle Identifier है। Push सूचनाओं से लेकर CloudKit तक सभी Apple सेवाएँ इस पहचानकर्ता से बंधी होती हैं। गलत तरीके से निर्दिष्ट Bundle ID हस्ताक्षर त्रुटियों और App Store में प्रकाशित करने में असमर्थता की ओर ले जाता है।
<!-- Info.plist — प्रोजेक्ट का आधार Bundle ID -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — PRODUCT_BUNDLE_IDENTIFIER वेरिएबल -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode Build Settings में PRODUCT_BUNDLE_IDENTIFIER वेरिएबल का उपयोग करता है। विभिन्न बिल्ड कॉन्फ़िगरेशन के लिए अलग-अलग मान सेट किए जा सकते हैं: Debug के लिए com.example.app.dev और Release के लिए com.example.app। यह परीक्षण के लिए एक ही डिवाइस पर प्रोडक्शन संस्करण के साथ डेव संस्करण स्थापित करने के लिए सुविधाजनक है।
यदि ऐप में एक्सटेंशन (Notification Service, Widget, Watch App) हैं, तो प्रत्येक एक्सटेंशन को प्रत्यय के साथ अपना स्वयं का Bundle ID मिलता है। मुख्य ऐप: com.example.app। विजेट एक्सटेंशन: com.example.app.widget। Watch App: com.example.app.watchkit। प्रत्येक पहचानकर्ता Apple Developer Portal में अलग से पंजीकृत होता है और अपनी स्वयं की प्रोविज़निंग प्रोफ़ाइल प्राप्त करता है। Xcode बिल्ड के दौरान इन निर्भरताओं को स्वचालित रूप से प्रबंधित करता है।
App Bundle ID (Apple) और Package Name (Google) समान उद्देश्य वाली समान संस्थाएँ हैं, लेकिन iOS और Android इकोसिस्टम में अलग-अलग उपयोग नियम हैं। दोनों पहचानकर्ता रिवर्स डोमेन नोटेशन का उपयोग करते हैं और आधिकारिक ऐप स्टोर में प्रकाशन के बाद बदले नहीं जा सकते।
Apple इकोसिस्टम में, Bundle ID प्रोविज़निंग प्रोफ़ाइल और प्रमाणपत्रों से बंधा होता है। डेवलपमेंट टीम बदलने पर, Bundle ID को App Store Connect के माध्यम से खातों के बीच स्थानांतरित किया जा सकता है। Android में, Package Name Google Play में ऐप से सख्ती से बंधा होता है और डेवलपर खातों के बीच स्थानांतरित नहीं किया जा सकता।
| विशेषता | iOS Bundle ID | Android Package Name |
|---|---|---|
| अधिकतम लंबाई | असीमित | 150 वर्ण |
| खंड विभाजक | डॉट (.) | डॉट (.) |
| अनुमत वर्ण | A-Z, a-z, 0-9, डॉट, हाइफ़न | A-Z, a-z, 0-9, डॉट, अंडरस्कोर |
| वाइल्डकार्ड | समर्थित (*) | समर्थित नहीं |
| कोड में उपयोग | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
अंतरों के बावजूद, दोनों पहचानकर्ता एक महत्वपूर्ण भूमिका निभाते हैं: उनके बिना आधिकारिक स्टोर में ऐप प्रकाशित करना असंभव है। क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट्स के लिए अनुशंसा — Firebase, Analytics और अन्य सेवाओं के साथ एकीकरण को सरल बनाने के लिए iOS और Android संस्करणों में समान पहचानकर्ता का उपयोग करें। यह डेवलपमेंट टीम के लिए नेविगेशन को भी सरल बनाता है: दोनों प्रोजेक्ट्स के लिए एक पहचानकर्ता CI/CD सेटअप और एनवायरनमेंट कॉन्फ़िगरेशन में भ्रम को कम करता है।
Flutter या React Native के साथ डेवलपमेंट करते समय, एकल पहचानकर्ता विशेष रूप से महत्वपूर्ण है क्योंकि कोडबेस साझा है और कई स्वचालित बिल्ड टूल दोनों प्लेटफ़ॉर्म के लिए समान पैकेज नाम की अपेक्षा करते हैं। Firebase प्रोजेक्ट भी iOS और Android के लिए एक ही पहचानकर्ता से बंधा होता है, जिससे एनालिटिक्स और क्रैश रिपोर्टिंग सेटअप सरल हो जाता है।
अक्सर पूछे जाने वाले प्रश्न
Bundle ID बदलना App Store या Google Play में प्रकाशन के बाद असंभव है। सिस्टम नए पहचानकर्ता को पूरी तरह से अलग ऐप मानेगा। मौजूदा उत्पाद को अपडेट करने के लिए, Bundle ID पूरे ऐप जीवनचक्र में अपरिवर्तित रहना चाहिए।
iOS या Android उपकरण पहले के ऊपर समान पहचानकर्ता वाला दूसरा ऐप इंस्टॉल करने की अनुमति नहीं देगा। सिस्टम एक त्रुटि प्रदर्शित करेगा और मौजूदा ऐप को हटाने का सुझाव देगा। स्टोर में, डुप्लिकेट Bundle ID के साथ प्रकाशन भी अवरुद्ध हो जाएगा।
अपनी कंपनी के रिवर्स डोमेन नोटेशन का उपयोग करें: com.companyname.appname। हाइफ़न और विशेष वर्णों से बचें। यदि ऐप में एक्सटेंशन हैं, तो डॉट्स द्वारा अलग किए गए प्रत्यय जोड़ें। सुनिश्चित करें कि पहचानकर्ता अद्वितीय है और किसी अन्य डेवलपर द्वारा नहीं लिया गया है।
हाँ, प्रत्येक एक्सटेंशन — विजेट, Watch App, Notification Service — को अपने स्वयं के Bundle ID की आवश्यकता होती है। पहचानकर्ता एक पदानुक्रम बनाते हैं: com.example.app आधार के रूप में, com.example.app.widget विजेट के लिए, com.example.app.watchkit Watch के लिए। सभी Apple Developer Portal में अलग-अलग पंजीकृत होते हैं और मूल ऐप के साथ एक सामान्य App ID साझा करते हैं।
Bundle ID ऐप कोड में एक पहचानकर्ता स्ट्रिंग है। App ID Apple Developer Portal में एक ऑब्जेक्ट है जो Bundle ID को सक्षम सेवाओं (capabilities) के सेट के साथ जोड़ता है। App ID Bundle ID के आधार पर बनाया जाता है और प्रोविज़निंग प्रोफ़ाइल उत्पन्न करने के लिए उपयोग किया जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें