App Group: Was es ist, Erstellung eines gemeinsamen Containers und Zugriffskonfiguration

Autor: IT Sectr Veröffentlicht: 2026-06-17 Lesezeit: 8 Min.

App Group ist ein iOS-Mechanismus, der einen gemeinsamen Container für den Datenaustausch zwischen einer App und ihren Erweiterungen erstellt. Ohne ihn arbeitet jeder Prozess (Haupt-App, Widget, Share Extension) in einer isolierten Sandbox und hat keinen Zugriff auf die Daten einer benachbarten Komponente. Laut Apple Developer Documentation, 2026 löst App Group dieses Problem durch eine eindeutige Gruppenkennung, die in den Berechtigungen angegeben wird. Es ist ein grundlegendes Werkzeug zur Schaffung einer konsistenten Benutzererfahrung im iOS-Ökosystem.

Wichtige Punkte

  • App Group — ein gemeinsames Verzeichnis im iOS-Dateisystem, das für die App und ihre Erweiterungen zugänglich ist.
  • Kennung folgt dem Muster group.* und wird in den Capabilities des Xcode-Projekts hinzugefügt.
  • UserDefaults mit Suite-Name ermöglicht die Synchronisierung von Einstellungen zwischen Prozessen ohne zusätzlichen Code.
  • Core Data über App Group ermöglicht Erweiterungen das Lesen und Schreiben von Daten in einer gemeinsamen Datenbank bei korrekter Store-URL-Konfiguration.
  • Sicherheit wird dadurch gewährleistet, dass nur Prozesse mit derselben Team-ID und Berechtigung auf den Container zugreifen können.

Was ist App Group?

App Group ist ein Mechanismus des iOS-Betriebssystems, der einen gemeinsamen Speicherbereich für mehrere Prozesse desselben Entwicklers bereitstellt. Ohne ihn arbeitet jede Erweiterung in ihrer eigenen Sandbox und kann keine Daten lesen, die von einer anderen Komponente geschrieben wurden. App Group löst diese Isolation, indem es ein Verzeichnis im Dateisystem erstellt, das für alle Prozesse mit den korrekten Berechtigungen zugänglich ist.

Die Gruppenkennung beginnt mit dem Präfix group. und wird in der Berechtigungsdatei des Projekts angegeben. In Xcode wird diese Kennung über Capabilities hinzugefügt — das System bindet sie automatisch in die Signatur der App ein. Nach der Konfiguration erhalten alle Gruppenmitglieder Zugriff auf das gemeinsame Verzeichnis unter Library/Application Support/ im Container.

Laut Apple WWDC 2020 Session 10026 deckt App Group drei wichtige Szenarien ab: Synchronisierung von Einstellungen über NSUserDefaults, gemeinsame Dateinutzung über FileManager und gemeinsame Core Data mit einem einzigen Speicher. Jedes Szenario erfordert lediglich die Angabe der Gruppenkennung in der entsprechenden API.

Wie der gemeinsame Container von App Group funktioniert

iOS erstellt den gemeinsamen Container beim ersten Start eines Prozesses mit der Berechtigung com.apple.security.application-groups. Physisch befindet sich der Container in einem Systemverzeichnis — sein Pfad unterscheidet sich von der Sandbox der Haupt-App und der Erweiterungen, aber alle autorisierten Prozesse haben Lese- und Schreibrechte.

Zugriffsrechte und Sicherheit

Apple gewährleistet die Sicherheit von App Group durch die Kombination von Team-ID und Code-Signatur. Ein Prozess, der nicht mit demselben Entwicklerzertifikat signiert ist, kann nicht auf den Gruppencontainer zugreifen. Dies verhindert Datenlecks zwischen Apps verschiedener Entwickler.

Gruppenkennung

Das Format der Kennung ist: group.<team-id>.<name>. Zum Beispiel group.ABC123DEFG.widget-data. Auf einem Gerät können mehrere Gruppen erstellt werden, jede mit ihrem eigenen Mitgliedersatz. Eine einzelne App kann gleichzeitig mehreren App Groups angehören — dies ist nützlich, um Daten verschiedener Erweiterungen zu trennen.

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 bietet die Methode containerURL(forSecurityApplicationGroupIdentifier:), die die URL des gemeinsamen Verzeichnisses zurückgibt. Es ist wichtig, diese Methode in jedem Prozess separat aufzurufen — der Pfad ist physisch derselbe, aber jeder Prozess sieht ihn durch seine eigene Sicherheitsperspektive.

Einrichtung von App Group in Xcode

Die Aktivierung von App Group in Xcode beginnt mit den Capabilities — der App Groups-Schalter fügt die Berechtigung zum Projekt hinzu. Das Apple Developer Portal erfordert ebenfalls, dass die App-Kennung diese Fähigkeit enthält. Ohne sie funktioniert die Code-Signatur auf einem echten Gerät nicht.

Schritt-für-Schritt-Einrichtung

Öffnen Sie Ihr Projekt in Xcode, wählen Sie das App-Target aus und gehen Sie zum Tab Signing & Capabilities. Klicken Sie auf + und wählen Sie App Groups. Erstellen Sie eine neue Gruppe oder wählen Sie eine vorhandene aus. Wiederholen Sie die gleichen Schritte für jede Erweiterung, die Zugriff auf den gemeinsamen Container benötigt. Alle Teilnehmer müssen dieselbe Gruppenkennung verwenden.

Überprüfung der Berechtigungen

Nach der Aktivierung von Capabilities erstellt Xcode automatisch eine .entitlements-Datei mit dem Schlüssel com.apple.security.application-groups und einem Array von Kennungen. Stellen Sie sicher, dass alle erforderlichen Erweiterungen diese Datei mit der korrekten Team-ID in der Gruppenkennung haben.

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

Wenn Ihr Projekt mehrere Erweiterungen hat (Today Widget, Share Extension, Notification Service), muss jede ihre eigene Berechtigungsdatei mit derselben Gruppe haben. Das Fehlen von Berechtigungen bei einem Target ist ein häufiger Grund, warum eine Erweiterung gemeinsame Daten nicht sehen kann.

Verwendung von UserDefaults mit App Group

Der einfachste Weg, Daten zwischen einer App und ihren Erweiterungen zu synchronisieren, ist UserDefaults mit einem Suite-Namen. Anstelle des Standard-UserDefaults.standard erstellen Sie eine Instanz mit der App Group-Kennung, und alle Prozesse lesen dieselben Einstellungen.

Laut den Apple Human Interface Guidelines eignet sich dieser Mechanismus zum Synchronisieren des Zustands: ausgewähltes Thema, Favoriten, Onboarding-Flags. Er ist jedoch nicht für große Datenmengen oder gleichzeitige Schreibvorgänge gedacht — dafür verwenden Sie Dateien oder 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

Beachten Sie: Die UserDefaults-Instanz mit suiteName wird in jedem Prozess separat erstellt, liest aber aus derselben plist-Datei im gemeinsamen Container. Die Methode synchronize() garantiert sofortiges Schreiben auf die Festplatte — in iOS 13+ kann sie weggelassen werden, da das System die Daten regelmäßig synchronisiert.

Gemeinsamer Zugriff auf Dateien und Core Data

Für komplexere Szenarien bietet App Group Zugriff auf ein gemeinsames Dateisystem. Jede Datei, die im Containerverzeichnis erstellt wird, ist für alle Prozesse der Gruppe zugänglich. Dies ermöglicht eine gemeinsame Core Data-Datenbank, einen Bildercache oder temporäre Dateien.

Konfiguration von Core Data mit App Group

Um einen gemeinsamen Core Data-Speicher zu verwenden, erstellen Sie einen NSPersistentContainer mit der URL der .sqlite-Datei im App Group-Verzeichnis. Stellen Sie sicher, dass jeweils nur ein Prozess in die Datenbank schreibt — gleichzeitiges Schreiben kann die Daten beschädigen. Eine typische Architektur: Die Haupt-App schreibt, die Erweiterungen lesen.

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
}()

Ein alternativer Ansatz ist ein dateibasierter Bildercache. NSCache lebt nur im Speicher, aber über App Group können Sie zwischengespeicherte Bilder auf der Festplatte im gemeinsamen Verzeichnis speichern. Die Widget-Erweiterung kann auf dieselben Dateien zugreifen und aktuelle Daten ohne zusätzliche Netzwerk-Downloads anzeigen.

SzenarioEmpfohlene APIDatengröße
Einstellungen und FlagsUserDefaults suiteNamebis zu 1 KB
BildercacheFileManager + NSCachebis zu 100 MB
Strukturierte DatenCore Data Storebis zu 500 MB
Temporäre DateienFileManager temporärbis zu 50 MB

Beachten Sie bei der Arbeit mit gemeinsamen Dateien, dass das System die Erweiterung jederzeit beenden kann. Verwenden Sie NSFileCoordinator zur Koordination des Zugriffs, um Datenbeschädigungen bei gleichzeitigem Schreiben durch mehrere Prozesse zu vermeiden.

Häufig gestellte Fragen

Was ist App Group in iOS?

App Group ist ein iOS-Mechanismus, der einen gemeinsamen Container zum Speichern von Daten zwischen einer App und ihren Erweiterungen erstellt. Er ermöglicht Prozessen mit derselben Gruppenkennung den Austausch von Dateien, UserDefaults-Einstellungen und Core Data-Daten über ein einziges Verzeichnis im Dateisystem.

Wie erstellt man eine App Group in Xcode?

Öffnen Sie die Capabilities des Targets in Xcode, aktivieren Sie App Groups und fügen Sie eine Kennung im Format group.* hinzu. Wiederholen Sie dann die gleichen Schritte für jede Erweiterung, die Zugriff auf den gemeinsamen Container benötigt. Stellen Sie sicher, dass alle Teilnehmer dieselbe Gruppenkennung verwenden.

Welche Erweiterungen können App Group verwenden?

Alle Arten von iOS-Erweiterungen unterstützen App Group: Today Widget (Widget-Erweiterung), Share Extension, Notification Service Extension, Custom Keyboard und andere. Jede Erweiterung muss eine separate Berechtigungsdatei mit derselben Gruppenkennung wie die Haupt-App haben.

Kann App Group zwischen verschiedenen Apps verwendet werden?

Ja, aber nur wenn die Apps mit demselben Entwicklerzertifikat signiert sind und dieselbe Team-ID haben. Apple gewährleistet Sicherheit durch Code-Signatur: Zwei Apps verschiedener Entwickler können nicht auf denselben Container zugreifen, selbst mit einer identischen Gruppenkennung.

Wie synchronisiert man Daten über App Group zwischen einer App und einem Widget?

Verwenden Sie UserDefaults mit Suite-Namen für kleine Einstellungen, FileManager für Dateien und Core Data für strukturierte Daten. Alle diese APIs arbeiten mit dem App Group-Verzeichnis — geben Sie einfach die Gruppenkennung bei der Initialisierung an. Stellen Sie bei Core Data sicher, dass die Store-URL auf das gemeinsame Verzeichnis verweist.

Zusammenfassung

  • App Group ist die einzige Möglichkeit, den Datenaustausch zwischen einer iOS-App und ihren Erweiterungen über einen gemeinsamen Container im Dateisystem zu organisieren.
  • Die Gruppenkennung folgt dem Format group.<team-id>.<name> und wird über Xcode Capabilities mit einer obligatorischen Berechtigungsdatei für jedes Target hinzugefügt.
  • UserDefaults mit Suite-Namen ist die einfachste Methode, um Einstellungen und Flags zwischen Prozessen zu synchronisieren, ohne Dateien verwalten zu müssen.
  • Core Data mit App Group erfordert die Angabe der Store-URL im Container und die Koordination des Zugriffs zwischen Prozessen, um Datenbankbeschädigungen zu vermeiden.
  • FileManager.containerURL gibt den Pfad zum gemeinsamen Verzeichnis zurück, der für alle Prozesse mit korrekten Berechtigungen gleich ist.
  • Die Datensicherheit wird durch die Überprüfung der Team-ID und Code-Signatur gewährleistet — nur Apps desselben Entwicklers haben Zugriff auf den gemeinsamen Container.
  • Für gleichzeitiges Schreiben in gemeinsame Dateien verwenden Sie NSFileCoordinator und für die Synchronisierung von Änderungen zwischen Prozessen Darwin Notifications oder CFNotificationCenter.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch