App Group: এটি কী, শেয়ার্ড কন্টেইনার তৈরি করা এবং অ্যাক্সেস কনফিগার করা

লেখক: IT Sectr প্রকাশিত: 2026-06-17 পড়ার সময়: 8 মিনিট

App Group হল একটি iOS মেকানিজম যা অ্যাপ এবং তার এক্সটেনশনের মধ্যে ডেটা আদান-প্রদানের জন্য একটি শেয়ার্ড কন্টেইনার তৈরি করে। এটি ছাড়া, প্রতিটি প্রক্রিয়া (মূল অ্যাপ, উইজেট, শেয়ার এক্সটেনশন) একটি বিচ্ছিন্ন স্যান্ডবক্সে চলে এবং প্রতিবেশী কম্পোনেন্টের ডেটা অ্যাক্সেস করতে পারে না। Apple Developer Documentation, 2026 অনুসারে, App Group entitlement-এ নির্দিষ্ট একটি একক গ্রুপ আইডেন্টিফায়ারের মাধ্যমে এই সমস্যার সমাধান করে। এটি 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 সঠিক entitlement-যুক্ত সমস্ত প্রক্রিয়ার জন্য অ্যাক্সেসযোগ্য একটি ডিরেক্টরি তৈরি করে এই বিচ্ছিন্নতা সমাধান করে।

গ্রুপ আইডেন্টিফায়ার group. উপসর্গ দিয়ে শুরু হয় এবং প্রোজেক্টের entitlement ফাইলে নির্দিষ্ট করা হয়। 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 Group-এর সদস্য হতে পারে — এটি বিভিন্ন এক্সটেনশনের ডেটা আলাদা করার জন্য উপযোগী।

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-এ আপনার প্রোজেক্ট খুলুন, অ্যাপ টার্গেট নির্বাচন করুন এবং 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), প্রতিটির একই গ্রুপের সাথে নিজস্ব entitlement ফাইল থাকতে হবে। কোনো টার্গেটে entitlement-এর অনুপস্থিতি একটি সাধারণ কারণ যার জন্য এক্সটেনশন শেয়ার্ড ডেটা দেখতে পায় না।

App Group-এর সাথে UserDefaults ব্যবহার

অ্যাপ এবং তার এক্সটেনশনের মধ্যে ডেটা সিঙ্ক করার সবচেয়ে সহজ উপায় হল suite name-সহ UserDefaults ব্যবহার করা। স্ট্যান্ডার্ড 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-এ টার্গেটের Capabilities খুলুন, App Groups সক্ষম করুন এবং group.* ফরম্যাটে একটি আইডেন্টিফায়ার যোগ করুন। তারপর প্রতিটি এক্সটেনশনের জন্য একই ধাপ পুনরাবৃত্তি করুন যার শেয়ার্ড কন্টেইনার অ্যাক্সেস প্রয়োজন। নিশ্চিত করুন যে সমস্ত অংশগ্রহণকারী একই গ্রুপ আইডেন্টিফায়ার ব্যবহার করে।

কোন এক্সটেনশনগুলি App Group ব্যবহার করতে পারে?

সমস্ত ধরনের iOS এক্সটেনশন App Group সমর্থন করে: Today Widget (উইজেট এক্সটেনশন), Share Extension, Notification Service Extension, Custom Keyboard এবং অন্যান্য। প্রতিটি এক্সটেনশনের মূল অ্যাপের মতো একই গ্রুপ আইডেন্টিফায়ার-সহ একটি পৃথক entitlement ফাইল থাকতে হবে।

বিভিন্ন অ্যাপের মধ্যে 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> অনুসরণ করে এবং প্রতিটি টার্গেটের জন্য বাধ্যতামূলক entitlement ফাইল-সহ Xcode Capabilities-এর মাধ্যমে যোগ করা হয়।
  • UserDefaults suite name-সহ ফাইল পরিচালনা না করেই প্রক্রিয়াগুলির মধ্যে সেটিংস এবং ফ্ল্যাগ সিঙ্ক করার সবচেয়ে সহজ পদ্ধতি।
  • App Group-এর সাথে Core Data-র জন্য কন্টেইনারের ভিতরে স্টোর URL নির্দিষ্ট করা এবং ডেটাবেস দূষণ এড়াতে প্রক্রিয়াগুলির মধ্যে অ্যাক্সেস সমন্বয় প্রয়োজন।
  • FileManager.containerURL শেয়ার্ড ডিরেক্টরির পাথ রিটার্ন করে, যা সঠিক entitlement-যুক্ত সমস্ত প্রক্রিয়ার জন্য একই।
  • ডেটা নিরাপত্তা team ID এবং কোড স্বাক্ষর যাচাই দ্বারা নিশ্চিত করা হয় — শুধুমাত্র একই ডেভেলপারের অ্যাপগুলি শেয়ার্ড কন্টেইনার অ্যাক্সেস করতে পারে।
  • শেয়ার্ড ফাইলে কনকারেন্ট রাইটের জন্য NSFileCoordinator ব্যবহার করুন এবং প্রক্রিয়াগুলির মধ্যে পরিবর্তন সিঙ্ক করতে Darwin Notifications বা CFNotificationCenter ব্যবহার করুন।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন