App Group: यह क्या है, साझा कंटेनर बनाना और एक्सेस कॉन्फ़िगर करना

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

App Group एक iOS तंत्र है जो ऐप और उसके एक्सटेंशन के बीच डेटा आदान-प्रदान के लिए एक साझा कंटेनर बनाता है। इसके बिना, प्रत्येक प्रक्रिया (मुख्य ऐप, विजेट, शेयर एक्सटेंशन) एक पृथक सैंडबॉक्स में चलती है और पड़ोसी घटक के डेटा तक पहुँच नहीं पाती। Apple Developer Documentation, 2026 के अनुसार, App Group entitlements में निर्दिष्ट एकल समूह पहचानकर्ता के माध्यम से इस समस्या को हल करता है। यह iOS इकोसिस्टम में एक सुसंगत उपयोगकर्ता अनुभव बनाने के लिए एक मौलिक उपकरण है।

मुख्य बिंदु

  • App Group — iOS फ़ाइल सिस्टम पर एक साझा निर्देशिका जो ऐप और उसके एक्सटेंशन के लिए सुलभ होती है।
  • पहचानकर्ता पैटर्न group.* का अनुसरण करता है और Xcode प्रोजेक्ट की Capabilities में जोड़ा जाता है।
  • UserDefaults suite name के साथ बिना अतिरिक्त कोड के प्रक्रियाओं के बीच सेटिंग्स को सिंक करने की अनुमति देता है।
  • Core Data App Group के माध्यम से एक्सटेंशन को सही Store URL कॉन्फ़िगरेशन के साथ साझा डेटाबेस में डेटा पढ़ने और लिखने की सुविधा देता है।
  • सुरक्षा सुनिश्चित है क्योंकि केवल समान team ID और entitlement वाली प्रक्रियाएँ ही कंटेनर तक पहुँच सकती हैं।

App Group क्या है?

App Group iOS ऑपरेटिंग सिस्टम का एक तंत्र है जो एक ही डेवलपर की कई प्रक्रियाओं के लिए एक साझा भंडारण क्षेत्र प्रदान करता है। इसके बिना, प्रत्येक एक्सटेंशन अपने स्वयं के सैंडबॉक्स में काम करता है और किसी अन्य घटक द्वारा लिखे गए डेटा को पढ़ नहीं सकता। App Group सही entitlements वाली सभी प्रक्रियाओं के लिए सुलभ एक निर्देशिका बनाकर इस अलगाव को हल करता है।

समूह पहचानकर्ता group. उपसर्ग से शुरू होता है और प्रोजेक्ट की entitlements फ़ाइल में निर्दिष्ट किया जाता है। Xcode में, यह पहचानकर्ता Capabilities के माध्यम से जोड़ा जाता है — सिस्टम स्वचालित रूप से इसे ऐप के हस्ताक्षर में शामिल करता है। कॉन्फ़िगरेशन के बाद, सभी समूह सदस्यों को कंटेनर के अंदर Library/Application Support/ पर साझा निर्देशिका तक पहुँच मिलती है।

Apple WWDC 2020 Session 10026 के अनुसार, App Group तीन मुख्य परिदृश्यों को कवर करता है: NSUserDefaults के माध्यम से सेटिंग्स सिंक करना, FileManager के माध्यम से फ़ाइलें साझा करना, और एकल स्टोर के साथ साझा Core Data। प्रत्येक परिदृश्य के लिए केवल संबंधित API में समूह पहचानकर्ता निर्दिष्ट करना आवश्यक है।

App Group का साझा कंटेनर कैसे काम करता है

iOS साझा कंटेनर को पहली बार किसी भी प्रक्रिया के चलने पर बनाता है जिसके पास com.apple.security.application-groups entitlement है। भौतिक रूप से, कंटेनर एक सिस्टम निर्देशिका में स्थित होता है — इसका पथ मुख्य ऐप और एक्सटेंशन के सैंडबॉक्स से भिन्न होता है, लेकिन सभी अधिकृत प्रक्रियाओं के पास पढ़ने और लिखने की अनुमति होती है।

पहुँच अधिकार और सुरक्षा

Apple team ID और कोड हस्ताक्षर के संयोजन के माध्यम से App Group की सुरक्षा सुनिश्चित करता है। वह प्रक्रिया जो समान डेवलपर प्रमाणपत्र से हस्ताक्षरित नहीं है, समूह कंटेनर तक नहीं पहुँच सकती। यह विभिन्न डेवलपर्स के ऐप्स के बीच डेटा लीक को रोकता है।

समूह पहचानकर्ता

पहचानकर्ता का प्रारूप: group.<team-id>.<name> है। उदाहरण के लिए, group.ABC123DEFG.widget-data। एक डिवाइस पर कई समूह बनाए जा सकते हैं, प्रत्येक के अपने सदस्यों का सेट होता है। एक ऐप एक साथ कई App Groups से संबंधित हो सकता है — यह विभिन्न एक्सटेंशन के डेटा को अलग करने के लिए उपयोगी है।

swift
// Get the App Group container URL
guard let containerURL = FileManager.default
    .containerURL(forSecurityApplicationGroupIdentifier: "group.com.example.widget")
else { return }

// Create a file in the shared container
let fileURL = containerURL.appendingPathComponent("shared.data")
try "Hello from main app".write(to: fileURL, atomically: true, encoding: .utf8)

FileManager विधि containerURL(forSecurityApplicationGroupIdentifier:) प्रदान करता है जो साझा निर्देशिका का URL लौटाता है। प्रत्येक प्रक्रिया में इस विधि को अलग-अलग कॉल करना महत्वपूर्ण है — पथ भौतिक रूप से समान है, लेकिन प्रत्येक प्रक्रिया इसे अपने सुरक्षा परिप्रेक्ष्य से देखती है।

Xcode में App Group सेट करना

Xcode में App Group सक्षम करना Capabilities से शुरू होता है — App Groups टॉगल प्रोजेक्ट में entitlement जोड़ता है। Apple Developer Portal भी आवश्यकता है कि ऐप पहचानकर्ता में यह क्षमता शामिल हो। इसके बिना, कोड हस्ताक्षर वास्तविक डिवाइस पर काम नहीं करेगा।

चरण-दर-चरण सेटअप

Xcode में अपना प्रोजेक्ट खोलें, ऐप target चुनें और Signing & Capabilities टैब पर जाएँ। + पर क्लिक करें और App Groups चुनें। एक नया समूह बनाएँ या मौजूदा चुनें। उन सभी एक्सटेंशन के लिए समान चरण दोहराएँ जिन्हें साझा कंटेनर तक पहुँच की आवश्यकता है। सभी प्रतिभागियों को समान समूह पहचानकर्ता का उपयोग करना चाहिए।

entitlements की जाँच

Capabilities सक्षम करने के बाद, Xcode स्वचालित रूप से com.apple.security.application-groups कुंजी और पहचानकर्ताओं की एक सरणी के साथ एक .entitlements फ़ाइल बनाता है। सुनिश्चित करें कि सभी आवश्यक एक्सटेंशन के पास समूह पहचानकर्ता में सही team ID के साथ यह फ़ाइल है।

xml
<!-- Example entitlements file -->
<key>com.apple.security.application-groups</key>
<array>
    <string>group.com.example.shared</string>
</array>

यदि आपके प्रोजेक्ट में कई एक्सटेंशन हैं (Today Widget, Share Extension, Notification Service), प्रत्येक के पास समान समूह के साथ अपनी स्वयं की entitlements फ़ाइल होनी चाहिए। किसी भी target पर entitlements की अनुपस्थिति एक सामान्य कारण है कि एक्सटेंशन साझा डेटा नहीं देख पाता।

App Group के साथ UserDefaults का उपयोग

ऐप और उसके एक्सटेंशन के बीच डेटा सिंक करने का सबसे सरल तरीका UserDefaults को suite name के साथ उपयोग करना है। मानक UserDefaults.standard के बजाय, आप App Group पहचानकर्ता के साथ एक इंस्टेंस बनाते हैं, और सभी प्रक्रियाएँ समान सेटिंग्स पढ़ती हैं।

Apple Human Interface Guidelines के अनुसार, यह तंत्र स्थिति को सिंक करने के लिए उपयुक्त है: चयनित थीम, पसंदीदा, ऑनबोर्डिंग फ़्लैग। हालाँकि, यह बड़े डेटा वॉल्यूम या समवर्ती लेखन संचालन के लिए अभिप्रेत नहीं है — इसके लिए फ़ाइलों या Core Data का उपयोग करें।

swift
// Write to UserDefaults App Group (main app)
let defaults = UserDefaults(suiteName: "group.com.example.shared")
defaults?.set(true, forKey: "isDarkMode")
defaults?.synchronize()

// Read from UserDefaults App Group (widget extension)
let sharedDefaults = UserDefaults(suiteName: "group.com.example.shared")
let isDark = sharedDefaults?.bool(forKey: "isDarkMode") ?? false

ध्यान दें: suiteName के साथ UserDefaults इंस्टेंस प्रत्येक प्रक्रिया में अलग-अलग बनाया जाता है लेकिन साझा कंटेनर में एक ही plist फ़ाइल से पढ़ता है। synchronize() विधि तत्काल डिस्क लेखन की गारंटी देती है — iOS 13+ में इसे छोड़ा जा सकता है क्योंकि सिस्टम समय-समय पर डेटा सिंक करता है।

फ़ाइलों और Core Data तक साझा पहुँच

अधिक जटिल परिदृश्यों के लिए, App Group एक साझा फ़ाइल सिस्टम तक पहुँच प्रदान करता है। कंटेनर निर्देशिका में बनाई गई कोई भी फ़ाइल समूह की सभी प्रक्रियाओं के लिए सुलभ होती है। यह एक साझा Core Data डेटाबेस, इमेज कैश या अस्थायी फ़ाइलों की अनुमति देता है।

App Group के साथ Core Data कॉन्फ़िगर करना

साझा Core Data स्टोर का उपयोग करने के लिए, App Group निर्देशिका में स्थित .sqlite फ़ाइल URL के साथ एक NSPersistentContainer बनाएँ। सुनिश्चित करें कि एक बार में केवल एक प्रक्रिया डेटाबेस में लिखती है — समवर्ती लेखन डेटा को दूषित कर सकता है। विशिष्ट आर्किटेक्चर: मुख्य ऐप लिखता है, एक्सटेंशन पढ़ते हैं।

swift
// Setup Core Data with App Group container
lazy var persistentContainer: NSPersistentContainer = {
    let container = NSPersistentContainer(name: "SharedModel")
    guard let appGroupURL = FileManager.default
        .containerURL(forSecurityApplicationGroupIdentifier: "group.com.example.shared")
    else { return container }

    let storeURL = appGroupURL.appendingPathComponent("SharedModel.sqlite")
    container.persistentStoreDescriptions = [NSPersistentStoreDescription(url: storeURL)]
    container.loadPersistentStores { _, error in
        if let error = error { fatalError(error.localizedDescription) }
    }
    return container
}()

एक वैकल्पिक दृष्टिकोण फ़ाइल-आधारित इमेज कैश है। NSCache केवल मेमोरी में रहता है, लेकिन App Group के माध्यम से आप कैश की गई छवियों को साझा निर्देशिका में डिस्क पर सहेज सकते हैं। विजेट एक्सटेंशन समान फ़ाइलों तक पहुँच सकता है और अतिरिक्त नेटवर्क डाउनलोड के बिना अद्यतित डेटा प्रदर्शित कर सकता है।

परिदृश्यअनुशंसित APIडेटा आकार
सेटिंग्स और फ़्लैगUserDefaults suiteName1 KB तक
इमेज कैशFileManager + NSCache100 MB तक
संरचित डेटाCore Data store500 MB तक
अस्थायी फ़ाइलेंFileManager अस्थायी50 MB तक

साझा फ़ाइलों के साथ काम करते समय, ध्यान रखें कि सिस्टम किसी भी समय एक्सटेंशन को समाप्त कर सकता है। एक साथ कई प्रक्रियाओं द्वारा लिखने पर डेटा भ्रष्टाचार से बचने के लिए पहुँच को समन्वयित करने हेतु NSFileCoordinator का उपयोग करें।

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

iOS में App Group क्या है?

App Group एक iOS तंत्र है जो ऐप और उसके एक्सटेंशन के बीच डेटा संग्रहण के लिए एक साझा कंटेनर बनाता है। यह समान समूह पहचानकर्ता वाली प्रक्रियाओं को फ़ाइलों, UserDefaults सेटिंग्स और Core Data डेटा का आदान-प्रदान करने की अनुमति देता है।

Xcode में App Group कैसे बनाएँ?

Xcode में target की Capabilities खोलें, App Groups सक्षम करें और group.* प्रारूप में एक पहचानकर्ता जोड़ें। फिर प्रत्येक एक्सटेंशन के लिए समान चरण दोहराएँ जिसे साझा कंटेनर तक पहुँच की आवश्यकता है। सुनिश्चित करें कि सभी प्रतिभागी समान समूह पहचानकर्ता का उपयोग करते हैं।

कौन से एक्सटेंशन App Group का उपयोग कर सकते हैं?

सभी प्रकार के iOS एक्सटेंशन App Group का समर्थन करते हैं: Today Widget (विजेट एक्सटेंशन), Share Extension, Notification Service Extension, Custom Keyboard और अन्य। प्रत्येक एक्सटेंशन के पास मुख्य ऐप के समान समूह पहचानकर्ता के साथ एक अलग entitlements फ़ाइल होनी चाहिए।

क्या विभिन्न ऐप्स के बीच App Group का उपयोग किया जा सकता है?

हाँ, लेकिन केवल तभी जब ऐप्स एक ही डेवलपर प्रमाणपत्र से हस्ताक्षरित हों और उनका team ID समान हो। Apple कोड हस्ताक्षर के माध्यम से सुरक्षा सुनिश्चित करता है: विभिन्न डेवलपर्स के दो ऐप समान समूह पहचानकर्ता के साथ भी एक ही कंटेनर तक नहीं पहुँच सकते।

ऐप और विजेट के बीच App Group के माध्यम से डेटा कैसे सिंक करें?

छोटी सेटिंग्स के लिए suite name के साथ UserDefaults, फ़ाइलों के लिए FileManager, और संरचित डेटा के लिए Core Data का उपयोग करें। ये सभी API App Group निर्देशिका के साथ काम करते हैं — बस आरंभीकरण के दौरान समूह पहचानकर्ता निर्दिष्ट करें। Core Data के लिए, सुनिश्चित करें कि स्टोर URL साझा निर्देशिका की ओर इंगित करता है।

सारांश

  • App Group एक iOS ऐप और उसके एक्सटेंशन के बीच फ़ाइल सिस्टम पर साझा कंटेनर के माध्यम से डेटा आदान-प्रदान को व्यवस्थित करने का एकमात्र तरीका है।
  • समूह पहचानकर्ता प्रारूप group.<team-id>.<name> का अनुसरण करता है और प्रत्येक target के लिए अनिवार्य entitlements फ़ाइल के साथ Xcode Capabilities के माध्यम से जोड़ा जाता है।
  • UserDefaults suite name के साथ फ़ाइलों को प्रबंधित किए बिना प्रक्रियाओं के बीच सेटिंग्स और फ़्लैग को सिंक करने का सबसे सरल तरीका है।
  • App Group के साथ Core Data को कंटेनर के अंदर स्टोर URL निर्दिष्ट करने और डेटाबेस भ्रष्टाचार से बचने के लिए प्रक्रियाओं के बीच पहुँच समन्वय की आवश्यकता होती है।
  • FileManager.containerURL साझा निर्देशिका का पथ लौटाता है, जो सही entitlements वाली सभी प्रक्रियाओं के लिए समान होता है।
  • डेटा सुरक्षा team ID और कोड हस्ताक्षर सत्यापन द्वारा सुनिश्चित की जाती है — केवल एक ही डेवलपर के ऐप्स ही साझा कंटेनर तक पहुँच सकते हैं।
  • साझा फ़ाइलों में समवर्ती लेखन के लिए NSFileCoordinator का उपयोग करें, और प्रक्रियाओं के बीच परिवर्तनों को सिंक करने के लिए Darwin Notifications या CFNotificationCenter का उपयोग करें।

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

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

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

यह भी पढ़ें