App Group: mi ez, közös tároló létrehozása és hozzáférés beállítása

Szerző: IT Sectr Megjelenés: 2026-06-17 Olvasási idő: 8 perc

Az App Group egy iOS-mechanizmus, amely közös tárolót hoz létre az alkalmazás és bővítményei közötti adatcseréhez. Enélkül minden folyamat (főalkalmazás, widget, share extension) elkülönített homokozóban működik, és nem fér hozzá a szomszédos komponens adataihoz. A Apple Developer Documentation, 2026 szerint az App Group ezt a problémát az entitlements-ben megadott egységes csoportazonosító segítségével oldja meg. Ez egy alapvető eszköz a konzisztens felhasználói élmény megteremtéséhez az iOS-ökoszisztémában.

Főbb pontok

  • App Group — megosztott könyvtár az iOS fájlrendszerében, elérhető az alkalmazás és bővítményei számára.
  • Identifier a group.* minta szerint alakul, és az Xcode-projekt Capabilities részében kerül hozzáadásra.
  • UserDefaults suite name-nel lehetővé teszi a beállítások szinkronizálását a folyamatok között extra kód nélkül.
  • Core Data az App Groupon keresztül lehetővé teszi a bővítmények számára, hogy a Store URL megfelelő beállításával olvassák és írják az adatokat a megosztott adatbázisba.
  • Biztonság garantált, mivel csak azonos team ID-val és entitlementtel rendelkező folyamatok férhetnek hozzá a tárolóhoz.

Mi az App Group?

App Group egy iOS operációs rendszer mechanizmusa, amely közös tárolóterületet biztosít egy fejlesztő több folyamata számára. Enélkül minden bővítmény a saját homokozójában működik, és nem tudja olvasni a másik komponens által írt adatokat. Az App Group megoldja ezt az elkülönítést azáltal, hogy létrehoz egy könyvtárat a fájlrendszerben, amely minden megfelelő entitlements-szel rendelkező folyamat számára elérhető.

A csoportazonosító a group. előtaggal kezdődik, és a projekt entitlements fájljában van megadva. Xcode-ban ez az azonosító a Capabilities-en keresztül kerül hozzáadásra — a rendszer automatikusan belefoglalja az alkalmazás aláírásába. A beállítás után a csoport minden tagja hozzáfér a megosztott könyvtárhoz a Library/Application Support/ útvonalon a tárolón belül.

Az Apple WWDC 2020 Session 10026 szerint az App Group három kulcsfontosságú forgatókönyvet fed le: beállítások szinkronizálása NSUserDefaults-on keresztül, megosztott hozzáférés fájlokhoz FileManageren keresztül, és a Core Data megosztott használata egyetlen tárhellyel. Minden forgatókönyvhöz elegendő a csoportazonosító megadása a megfelelő API-ban.

Hogyan működik az App Group közös tárolója

Az iOS létrehozza a közös tárolót bármely com.apple.security.application-groups entitlementtel rendelkező folyamat első futtatásakor. Fizikailag a tároló egy rendszerkönyvtárban található — az útvonala eltér a főalkalmazás és a bővítmények homokozójától, de minden jogosult folyamat rendelkezik olvasási és írási jogosultsággal.

Hozzáférési jogok és biztonság

Az Apple az App Group biztonságát a team ID és a kódaláírás kapcsolatán keresztül garantálja. Az a folyamat, amely nincs ugyanazzal a fejlesztői tanúsítvánnyal aláírva, nem férhet hozzá a csoport tárolójához. Ez megakadályozza az adatszivárgást a különböző fejlesztők alkalmazásai között.

Csoportazonosító

Az azonosító formátuma: group.<team-id>.<name>. Például group.ABC123DEFG.widget-data. Egy eszközön több csoport is létrehozható, mindegyik saját résztvevői készlettel. Egy alkalmazás egyszerre több App Grouphoz is tartozhat — ez hasznos a különböző bővítmények adatainak szétválasztásához.

swift
// Szerezd meg az App Group tároló URL-jét
guard let containerURL = FileManager.default
    .containerURL(forSecurityApplicationGroupIdentifier: "group.com.example.widget")
else { return }

// Hozz létre egy fájlt a megosztott tárolóban
let fileURL = containerURL.appendingPathComponent("shared.data")
try "Hello from main app".write(to: fileURL, atomically: true, encoding: .utf8)

A FileManager biztosítja a containerURL(forSecurityApplicationGroupIdentifier:) metódust, amely visszaadja a megosztott könyvtár URL-jét. Fontos, hogy ezt a metódust minden folyamatban külön hívjuk meg — az útvonal fizikailag ugyanaz, de minden folyamat a saját biztonsági prizmáján keresztül látja.

App Group beállítása Xcode-ban

Az App Group bekapcsolása a Xcode-ban a Capabilities-nél kezdődik — az App Groups kapcsoló entitlementet ad a projekthez. Az Apple Developer Portal szintén megköveteli, hogy az alkalmazásazonosító tartalmazza ezt a capability-t. Enélkül a kódaláírás nem fog működni valós eszközön.

Lépésről lépésre történő beállítás

Nyissa meg a projektet Xcode-ban, válassza ki az alkalmazás targetjét, és lépjen a Signing & Capabilities fülre. Nyomja meg a + gombot, és válassza az App Groups lehetőséget. Hozzon létre egy új csoportot, vagy válasszon ki egy meglévőt. Ismételje meg ugyanazokat a lépéseket minden olyan bővítmény esetében, amelynek hozzá kell férnie a közös tárolóhoz. Minden résztvevőnek ugyanazt a csoportazonosítót kell használnia.

Entitlements ellenőrzése

A Capabilities bekapcsolása után az Xcode automatikusan létrehozza a .entitlements fájlt a com.apple.security.application-groups kulccsal és az azonosítók tömbjével. Győződjön meg arról, hogy minden szükséges bővítmény rendelkezik ezzel a fájllal a megfelelő team ID-vel a csoportazonosítóban.

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

Ha projektje több bővítményt tartalmaz (Today Widget, Share Extension, Notification Service), mindegyiknek saját entitlements fájllal kell rendelkeznie ugyanazzal a csoporttal. Az entitlements hiánya bármely targetnél gyakori oka annak, hogy a bővítmény nem látja a megosztott adatokat.

UserDefaults használata App Grouppal

A legegyszerűbb módja az adatok szinkronizálásának az alkalmazás és bővítményei között — UserDefaults a suite name megadásával. A szokásos UserDefaults.standard helyett létrehoz egy példányt az App Group azonosítóval, és minden folyamat ugyanazokat a beállításokat olvassa.

Az Apple Human Interface Guidelines szerint ez a mechanizmus alkalmas az állapot szinkronizálására: kiválasztott téma, kedvenc elemek, onbording jelzők. Azonban nem nagy adatmennyiségekhez vagy egyidejű írási műveletekhez készült — ehhez használjon fájlokat vagy Core Data-t.

swift
// Írás a UserDefaults App Group-ba (főalkalmazás)
let defaults = UserDefaults(suiteName: "group.com.example.shared")
defaults?.set(true, forKey: "isDarkMode")
defaults?.synchronize()

// Olvasás a UserDefaults App Group-ból (widget bővítmény)
let sharedDefaults = UserDefaults(suiteName: "group.com.example.shared")
let isDark = sharedDefaults?.bool(forKey: "isDarkMode") ?? false

Vegye figyelembe: a suiteName-nel létrehozott UserDefaults-példány minden folyamatban külön jön létre, de egyetlen plist-fájlból olvas a közös tárolóban. A synchronize() metódus garantálja az azonnali lemezre írást — iOS 13+ esetén elhagyható, mivel a rendszer időszakosan szinkronizálja az adatokat.

Megosztott hozzáférés fájlokhoz és Core Data-hoz

Összetettebb forgatókönyvek esetén az App Group hozzáférést biztosít a megosztott fájlrendszerhez. Bármely fájl, amely a tároló könyvtárában jön létre, elérhető a csoport összes folyamata számára. Ez lehetővé teszi egy megosztott Core Data adatbázis, képgyorsítótár vagy ideiglenes fájlok implementálását.

Core Data beállítása App Grouppal

A megosztott Core Data-tárhely használatához hozzon létre egy NSPersistentContainer-t az App Group könyvtárában található .sqlite fájl URL-jével. Győződjön meg arról, hogy egyszerre csak egy folyamat ír az adatbázisba — az egyidejű írás károsíthatja az adatokat. Tipikus architektúra: a főalkalmazás ír, a bővítmények olvasnak.

swift
// Core Data beállítása App Group tárolóval
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
}()

Alternatív megközelítés — képek fájl-gyorsítótára. Az NSCache csak a memóriában él, de az App Groupon keresztül a gyorsítótárazott képeket lemezre mentheti a megosztott könyvtárba. A widget bővítmény hozzáfér ugyanazokhoz a fájlokhoz, és naprakész adatokat jelenít meg további hálózati betöltés nélkül.

ForgatókönyvAjánlott APIAdatmennyiség
Beállítások és jelzőkUserDefaults suiteName1 KB-ig
KépgyorsítótárFileManager + NSCache100 MB-ig
Strukturált adatokCore Data store500 MB-ig
Ideiglenes fájlokFileManager temporary50 MB-ig

A megosztott fájlokkal való munka során vegye figyelembe, hogy a rendszer bármikor eltávolíthatja a bővítményt a memóriából. Használja az NSFileCoordinator-t a hozzáférés koordinálásához, hogy elkerülje az adatok sérülését a különböző folyamatok egyidejű írásakor.

Gyakran Ismételt Kérdések

Mi az App Group iOS-ben?

Az App Group egy iOS-mechanizmus, amely közös tárolót hoz létre az alkalmazás és bővítményei közötti adattároláshoz. Lehetővé teszi az azonos csoportazonosítóval rendelkező folyamatok számára, hogy fájlokat, UserDefaults-beállításokat és Core Data-adatokat cseréljenek egyetlen könyvtáron keresztül a fájlrendszerben.

Hogyan hozzak létre App Group-ot Xcode-ban?

Nyissa meg a target Capabilities részét Xcode-ban, kapcsolja be az App Groups-ot, és adjon hozzá egy azonosítót a group.* formátumban. Ezután ismételje meg ugyanazokat a lépéseket minden olyan bővítmény esetében, amelynek hozzá kell férnie a közös tárolóhoz. Győződjön meg arról, hogy minden résztvevő ugyanazt a csoportazonosítót használja.

Mely bővítmények használhatják az App Group-ot?

Az iOS-bővítmények minden típusa támogatja az App Group-ot: Today Widget (widget extension), Share Extension, Notification Service Extension, Custom Keyboard és mások. Minden bővítménynek rendelkeznie kell egy külön entitlements fájllal ugyanazzal a csoportazonosítóval, mint a főalkalmazásnak.

Használható az App Group különböző alkalmazások között?

Igen, de csak akkor, ha az alkalmazások ugyanazzal a fejlesztői tanúsítvánnyal vannak aláírva, és ugyanaz a team ID-juk. Az Apple a kódaláíráson keresztül garantálja a biztonságot: két különböző fejlesztő alkalmazása nem férhet hozzá ugyanahhoz a tárolóhoz még azonos csoportazonosító esetén sem.

Hogyan szinkronizáljak adatokat az App Groupon keresztül az alkalmazás és a widget között?

Használja a UserDefaults-ot suite name-nel kis beállításokhoz, a FileManager-t fájlokhoz és a Core Data-t strukturált adatokhoz. Mindezek az API-k az App Group könyvtárral működnek — elegendő a csoportazonosító megadása az inicializáláskor. Core Data esetén győződjön meg arról, hogy a tároló URL-je a megosztott könyvtárra mutat.

Összefoglalás

  • Az App Group az egyetlen módja az iOS-alkalmazás és bővítményei közötti adatcsere megszervezésének egy közös tárolón keresztül a fájlrendszerben.
  • A csoportazonosító formátuma group.<team-id>.<name>, és az Xcode Capabilities-en keresztül kerül hozzáadásra kötelező entitlements fájllal minden targethez.
  • A UserDefaults suite name-nel a legegyszerűbb módszer a beállítások és jelzők folyamatok közötti szinkronizálására fájlkezelés nélkül.
  • A Core Data App Grouppal való használata megköveteli a tároló URL-jének megadását a konténeren belül és a hozzáférés koordinálását a folyamatok között az adatbázis sérülésének elkerülése érdekében.
  • A FileManager.containerURL visszaadja a megosztott könyvtár elérési útját, amely megegyezik minden megfelelő entitlements-szel rendelkező folyamat számára.
  • Az adatbiztonságot a team ID és a kódaláírás ellenőrzése garantálja — csak ugyanazon fejlesztő alkalmazásai férhetnek hozzá a közös tárolóhoz.
  • Egyidejű íráshoz megosztott fájlokban használja az NSFileCoordinator-t, a folyamatok közötti változások szinkronizálásához pedig a Darwin Notifications vagy a CFNotificationCenter rendszert.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is