App Group: apa itu, membuat container bersama dan konfigurasi akses

Penulis: IT Sectr Diterbitkan: 2026-06-17 Waktu membaca: 8 mnt

App Group adalah mekanisme iOS yang membuat container bersama untuk pertukaran data antara aplikasi dan ekstensinya. Tanpanya, setiap proses (aplikasi utama, widget, share extension) berjalan di sandbox terisolasi dan tidak memiliki akses ke data komponen tetangga. Menurut Apple Developer Documentation, 2026, App Group memecahkan masalah ini melalui pengidentifikasi grup tunggal yang ditentukan di entitlements. Ini adalah alat fundamental untuk menciptakan pengalaman pengguna yang konsisten di ekosistem iOS.

Poin Utama

  • App Group — direktori bersama di sistem file iOS, dapat diakses oleh aplikasi dan ekstensinya.
  • Identifier dibentuk dengan pola group.* dan ditambahkan di Capabilities proyek Xcode.
  • UserDefaults dengan suite name memungkinkan sinkronisasi pengaturan antar proses tanpa kode tambahan.
  • Core Data melalui App Group memungkinkan ekstensi membaca dan menulis data di database bersama dengan konfigurasi Store URL yang benar.
  • Keamanan dijamin karena hanya proses dengan team ID dan entitlement yang sama yang memiliki akses ke container.

Apa itu App Group?

App Group adalah mekanisme sistem operasi iOS yang menyediakan area penyimpanan bersama untuk beberapa proses dari satu pengembang. Tanpanya, setiap ekstensi bekerja di sandbox-nya sendiri dan tidak dapat membaca data yang ditulis oleh komponen lain. App Group memecahkan isolasi ini dengan membuat direktori di sistem file yang dapat diakses oleh semua proses dengan entitlements yang benar.

Pengidentifikasi grup dimulai dengan awalan group. dan ditentukan dalam file entitlements proyek. Di Xcode, pengidentifikasi ini ditambahkan melalui Capabilities — sistem secara otomatis memasukkannya ke dalam tanda tangan aplikasi. Setelah konfigurasi, semua anggota grup mendapatkan akses ke direktori bersama di jalur Library/Application Support/ di dalam container.

Menurut Apple WWDC 2020 Session 10026, App Group mencakup tiga skenario utama: sinkronisasi pengaturan melalui NSUserDefaults, akses bersama ke file melalui FileManager, dan penggunaan bersama Core Data dengan satu penyimpanan. Untuk setiap skenario, cukup menentukan pengidentifikasi grup di API yang sesuai.

Bagaimana cara kerja container bersama App Group

iOS membuat container bersama saat pertama kali menjalankan proses apa pun yang memiliki entitlement com.apple.security.application-groups. Secara fisik, container berada di direktori sistem — jalurnya berbeda dari sandbox aplikasi utama dan ekstensi, tetapi semua proses yang berwenang memiliki hak baca dan tulis.

Hak akses dan keamanan

Apple menjamin keamanan App Group melalui hubungan antara team ID dan tanda tangan kode. Proses yang tidak ditandatangani dengan sertifikat pengembang yang sama tidak dapat mengakses container grup. Ini mencegah kebocoran data antara aplikasi dari pengembang yang berbeda.

Pengidentifikasi grup

Format pengidentifikasi: group.<team-id>.<name>. Misalnya, group.ABC123DEFG.widget-data. Pada satu perangkat, beberapa grup dapat dibuat, masing-masing dengan kumpulan peserta sendiri. Satu aplikasi dapat menjadi anggota beberapa App Group secara bersamaan — ini berguna untuk memisahkan data dari ekstensi yang berbeda.

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

// Buat file di container bersama
let fileURL = containerURL.appendingPathComponent("shared.data")
try "Hello from main app".write(to: fileURL, atomically: true, encoding: .utf8)

FileManager menyediakan metode containerURL(forSecurityApplicationGroupIdentifier:) yang mengembalikan URL direktori bersama. Penting untuk memanggil metode ini di setiap proses secara terpisah — jalurnya secara fisik sama, tetapi setiap proses melihatnya melalui prisma keamanannya sendiri.

Konfigurasi App Group di Xcode

Mengaktifkan App Group di Xcode dimulai dari Capabilities — saklar App Groups menambahkan entitlement ke proyek. Apple Developer Portal juga mensyaratkan bahwa pengidentifikasi aplikasi menyertakan capability ini. Tanpanya, tanda tangan kode tidak akan berfungsi di perangkat nyata.

Konfigurasi langkah demi langkah

Buka proyek di Xcode, pilih target aplikasi dan buka tab Signing & Capabilities. Tekan + dan pilih App Groups. Buat atau pilih grup yang sudah ada. Ulangi langkah yang sama untuk setiap ekstensi yang harus memiliki akses ke container bersama. Semua peserta harus menggunakan pengidentifikasi grup yang sama.

Memeriksa entitlements

Setelah mengaktifkan Capabilities, Xcode secara otomatis membuat file .entitlements dengan kunci com.apple.security.application-groups dan array pengidentifikasi. Pastikan semua ekstensi yang diperlukan memiliki file ini dengan team ID yang benar di pengidentifikasi grup.

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

Jika proyek Anda memiliki beberapa ekstensi (Today Widget, Share Extension, Notification Service), masing-masing harus memiliki file entitlements sendiri dengan grup yang sama. Ketiadaan entitlements di target mana pun adalah penyebab umum mengapa ekstensi tidak melihat data bersama.

Menggunakan UserDefaults dengan App Group

Cara paling sederhana untuk menyinkronkan data antara aplikasi dan ekstensi — UserDefaults dengan menentukan suite name. Alih-alih UserDefaults.standard standar, Anda membuat instance dengan pengidentifikasi App Group dan semua proses membaca pengaturan yang sama.

Menurut Apple Human Interface Guidelines, mekanisme ini cocok untuk menyinkronkan status: tema yang dipilih, item favorit, flag onbording. Namun, ini tidak dirancang untuk volume data besar atau operasi tulis bersamaan — untuk itu gunakan file atau Core Data.

swift
// Tulis ke UserDefaults App Group (aplikasi utama)
let defaults = UserDefaults(suiteName: "group.com.example.shared")
defaults?.set(true, forKey: "isDarkMode")
defaults?.synchronize()

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

Perhatikan: instance UserDefaults dengan suiteName dibuat di setiap proses secara terpisah, tetapi membaca dari satu file plist di container bersama. Metode synchronize() menjamin penulisan segera ke disk — di iOS 13+ dapat dihilangkan karena sistem menyinkronkan data secara periodik.

Akses bersama ke file dan Core Data

Untuk skenario yang lebih kompleks, App Group menyediakan akses ke sistem file bersama. File apa pun yang dibuat di direktori container dapat diakses oleh semua proses dalam grup. Ini memungkinkan implementasi database Core Data bersama, cache gambar, atau file sementara.

Konfigurasi Core Data dengan App Group

Untuk menggunakan penyimpanan Core Data bersama, buat NSPersistentContainer dengan URL file .sqlite yang terletak di direktori App Group. Pastikan hanya satu proses yang menulis ke database pada satu waktu — penulisan bersamaan dapat merusak data. Arsitektur tipikal: aplikasi utama menulis, ekstensi membaca.

swift
// Siapkan Core Data dengan container App Group
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
}()

Pendekatan alternatif — cache file gambar. NSCache hanya hidup di memori, tetapi melalui App Group Anda dapat menyimpan gambar yang di-cache ke disk di direktori bersama. Ekstensi widget mendapatkan akses ke file yang sama dan menampilkan data terkini tanpa pemuatan tambahan dari jaringan.

SkenarioAPI yang DirekomendasikanUkuran Data
Pengaturan dan flagUserDefaults suiteNamehingga 1 KB
Cache gambarFileManager + NSCachehingga 100 MB
Data terstrukturCore Data storehingga 500 MB
File sementaraFileManager temporaryhingga 50 MB

Saat bekerja dengan file bersama, pertimbangkan bahwa sistem dapat membongkar ekstensi kapan saja. Gunakan NSFileCoordinator untuk koordinasi akses guna menghindari kerusakan data saat penulisan bersamaan oleh proses yang berbeda.

Pertanyaan yang Sering Diajukan

Apa itu App Group di iOS?

App Group adalah mekanisme iOS yang membuat container bersama untuk penyimpanan data antara aplikasi dan ekstensinya. Ini memungkinkan proses dengan pengidentifikasi grup yang sama untuk bertukar file, pengaturan UserDefaults, dan data Core Data melalui direktori tunggal di sistem file.

Bagaimana cara membuat App Group di Xcode?

Buka Capabilities target di Xcode, aktifkan App Groups dan tambahkan pengidentifikasi dalam format group.*. Kemudian ulangi langkah yang sama untuk setiap ekstensi yang harus memiliki akses ke container bersama. Pastikan semua peserta menggunakan pengidentifikasi grup yang sama.

Ekstensi apa yang dapat menggunakan App Group?

Semua jenis ekstensi iOS mendukung App Group: Today Widget (widget extension), Share Extension, Notification Service Extension, Custom Keyboard dan lainnya. Setiap ekstensi harus memiliki file entitlements terpisah dengan pengidentifikasi grup yang sama dengan aplikasi utama.

Bisakah App Group digunakan antar aplikasi yang berbeda?

Ya, tetapi hanya jika aplikasi ditandatangani dengan sertifikat pengembang yang sama dan memiliki team ID yang sama. Apple menjamin keamanan melalui tanda tangan kode: dua aplikasi dari pengembang yang berbeda tidak dapat mengakses container yang sama bahkan dengan pengidentifikasi grup yang sama.

Bagaimana cara menyinkronkan data melalui App Group antara aplikasi dan widget?

Gunakan UserDefaults dengan suite name untuk pengaturan kecil, FileManager untuk file, dan Core Data untuk data terstruktur. Semua API ini bekerja dengan direktori App Group — cukup tentukan pengidentifikasi grup saat inisialisasi. Untuk Core Data, pastikan URL penyimpanan menunjuk ke direktori bersama.

Kesimpulan

  • App Group adalah satu-satunya cara untuk mengatur pertukaran data antara aplikasi iOS dan ekstensinya melalui container bersama di sistem file.
  • Pengidentifikasi grup memiliki format group.<team-id>.<name> dan ditambahkan melalui Capabilities Xcode dengan file entitlements wajib untuk setiap target.
  • UserDefaults dengan suite name adalah metode paling sederhana untuk menyinkronkan pengaturan dan flag antar proses tanpa perlu mengelola file.
  • Core Data dengan App Group memerlukan penentuan URL penyimpanan di dalam container dan koordinasi akses antar proses untuk menghindari kerusakan database.
  • FileManager.containerURL mengembalikan jalur ke direktori bersama yang sama untuk semua proses dengan entitlements yang benar.
  • Keamanan data dijamin dengan pemeriksaan team ID dan tanda tangan kode — hanya aplikasi dari pengembang yang sama yang memiliki akses ke container bersama.
  • Untuk penulisan bersamaan di file bersama gunakan NSFileCoordinator, dan untuk sinkronisasi perubahan antar proses — Darwin Notifications atau CFNotificationCenter.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga