Application Support — adalah direktori dalam sandbox aplikasi iOS yang dirancang untuk menyimpan data pendukung yang diperlukan untuk pengoperasian aplikasi, tetapi tidak dibuat langsung oleh pengguna. Menurut Apple File System Basics (2024), direktori ini optimal untuk file konfigurasi, database SQLite Core Data, dokumen yang di-cache, dan data lain yang dihasilkan aplikasi secara mandiri. Berbeda dengan Documents Directory, Application Support tidak ditampilkan di iTunes File Sharing dan pengguna tidak memiliki akses langsung ke sana, yang melindungi data layanan dari penghapusan tidak sengaja.
Poin utama
Application Support — adalah direktori dalam sandbox aplikasi iOS yang dirancang untuk menyimpan data yang dibuat dan digunakan aplikasi untuk pengoperasiannya, tetapi bukan dokumen pengguna. Ini adalah tempat utama untuk konfigurasi, database, metadata yang di-cache, dan file pendukung lainnya.
iOS membedakan Application Support sebagai tingkat menengah antara Documents (data pengguna) dan Caches (data sementara). File di Application Support bisa relatif permanen, tetapi pengguna tidak boleh memiliki akses langsung ke sana — ini yang membedakannya dari Documents Directory.
Menurut Apple Developer Documentation (2024), Application Support adalah lokasi yang direkomendasikan untuk menyimpan database SQLite Core Data, file Realm, konfigurasi dalam format JSON/plist, materi referensi yang diunduh, dan data lain yang digunakan aplikasi tetapi tidak dibuat secara eksplisit oleh pengguna.
Penting: secara default, Application Support termasuk dalam cadangan iCloud dan iTunes. Jika aplikasi menyimpan volume data besar yang dapat dipulihkan di direktori ini (misalnya, panduan yang diunduh), perlu mengatur flag isExcludedFromBackup untuk file yang bersangkutan.
Di Swift, jalur ke Application Support Directory diperoleh melalui FileManager.urls(for: .applicationSupportDirectory). Apple merekomendasikan membuat subdirektori dengan nama aplikasi di dalam Application Support untuk isolasi data.
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Buat subdirektori aplikasi
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
Objective-C menggunakan NSSearchPathForDirectoriesInDomains dengan NSApplicationSupportDirectory. Sama seperti di Swift, disarankan membuat subdirektori dengan nama aplikasi.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
Pada peluncuran pertama, direktori Application Support mungkin belum ada — harus dibuat menggunakan createDirectory(at:withIntermediateDirectories:). Ini membedakannya dari Documents Directory yang dibuat secara otomatis oleh sistem.
Application Support cocok untuk berbagai data yang digunakan aplikasi untuk pengoperasiannya. Pemilihan data yang tepat untuk direktori ini meningkatkan organisasi sistem file dan menyederhanakan pencadangan.
File SQLite Core Data secara default dibuat di Application Support. Realm juga merekomendasikan menempatkan database di direktori ini. Ini mengisolasi dokumen pengguna dari database internal aplikasi.
JSON, plist, file XML dengan pengaturan aplikasi, Feature Flags, metadata yang di-cache tentang pengguna (tetapi bukan token autentikasi — untuk itu ada Keychain).
| Tipe data | Application Support | Alternatif |
|---|---|---|
| SQLite Core Data | Ya (default) | — |
| Konfigurasi .plist / .json | Ya | UserDefaults (untuk sederhana) |
| Materi referensi yang diunduh | Ya | Documents (jika untuk pengguna) |
| Log aplikasi | Bersyarat | Caches (untuk log) |
| Token autentikasi | Tidak | Keychain |
Kriteria pemilihan: jika data dibuat dan digunakan oleh aplikasi, bukan oleh pengguna, dan harus dipertahankan antar peluncuran — tempatnya di Application Support.
Core Data — salah satu konsumen utama Application Support. Saat membuat NSPersistentContainer, Core Data secara otomatis menempatkan file SQLite di Library/Application Support dengan nama unik berdasarkan nama model.
Memahami di mana Core Data menyimpan file sangat penting untuk migrasi, pencadangan, dan debugging. File utama: .sqlite (data), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).
import CoreData
// Buat wadah Core Data
let container = NSPersistentContainer(name: "MyAppModel")
// Direktori URL toko kustom
guard let appSupportURL = FileManager.default
.urls(for: .applicationSupportDirectory,
in: .userDomainMask).first else { return }
let storeURL = appSupportURL
.appendingPathComponent("MyAppModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]
Saat menggunakan sinkronisasi CloudKit untuk Core Data, file SQLite tetap di Application Support, dan CloudKit digunakan sebagai lapisan transport. Dalam hal ini, penting untuk tidak mengecualikan file dari cadangan — jika tidak, sinkronisasi antar perangkat dapat terganggu.
Perbedaan antara Application Support dan Documents — salah satu yang paling penting untuk organisasi struktur file aplikasi iOS yang benar. Pilihan yang salah dapat menyebabkan pengguna secara tidak sengaja menghapus data penting aplikasi atau, sebaliknya, tidak dapat menemukan file mereka sendiri.
| Parameter | Application Support | Documents Directory |
|---|---|---|
| Akses pengguna | Tidak (tersembunyi) | Melalui iTunes File Sharing |
| Tipe data | Data layanan aplikasi | Dokumen pengguna |
| Cadangan iCloud | Ya (default) | Ya (default) |
| Risiko penghapusan | Rendah (tanpa akses) | Sedang (dapat diakses pengguna) |
| Contoh | SQLite Core Data | PDF yang diekspor |
Aturan sederhana: jika pengguna harus melihat file dan dapat menghapusnya — gunakan Documents. Jika file diperlukan aplikasi untuk beroperasi, tetapi pengguna tidak perlu tahu tentangnya — gunakan Application Support. Jika data dapat dipulihkan — gunakan Caches.
Bekerja dengan Application Support memerlukan pertimbangan beberapa fitur yang membedakannya dari direktori lain di sandbox. Mengikuti praktik ini membantu menghindari kehilangan data, masalah migrasi, dan perilaku aplikasi yang tidak terduga.
Tidak seperti Documents, Application Support mungkin tidak ada pada peluncuran pertama. Gunakan createDirectory(at:withIntermediateDirectories:) dengan parameter withIntermediateDirectories: true untuk menjamin pembuatan seluruh rantai subdirektori.
Buat subdirektori dengan Bundle Identifier di dalam Application Support. Ini mengisolasi data aplikasi Anda dari data aplikasi lain (meskipun sandbox sudah menyediakan isolasi) dan menyederhanakan migrasi saat berganti penyedia.
import Foundation
enum AppSupport {
static func ensureDirectory() throws -> URL {
let fm = FileManager.default
let baseURL = try fm.url(
for: .applicationSupportDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true
)
let appDir = baseURL
.appendingPathComponent(Bundle.main.bundleIdentifier ?? "default")
try fm.createDirectory(at: appDir, withIntermediateDirectories: true)
return appDir
}
}
Mengikuti praktik ini menjamin bahwa data layanan aplikasi terorganisir dengan benar, terlindung dari penghapusan tidak sengaja oleh pengguna, dan dipulihkan dengan benar dari cadangan.
Pertanyaan yang sering diajukan
Ya, Application Support tidak dibuat secara otomatis saat instalasi aplikasi. Tidak seperti Documents dan Caches yang dibuat sistem pada peluncuran pertama, Application Support harus dibuat oleh pengembang menggunakan FileManager.createDirectory(at:withIntermediateDirectories:). Ini biasanya dilakukan dalam metode application(_:didFinishLaunchingWithOptions:).
Tidak, melalui antarmuka standar iOS (Files, iTunes) pengguna tidak memiliki akses ke Application Support. Namun, saat menghapus aplikasi itu sendiri, seluruh sandbox, termasuk Application Support, dihapus sepenuhnya. Cadangan di iCloud disimpan hingga pemulihan atau penghapusan manual.
Untuk video yang diunduh yang ditujukan untuk pengguna, lebih baik menggunakan Documents Directory — agar pengguna dapat mengelola file tersebut melalui Files. Jika video adalah bagian dari cache internal aplikasi (misalnya, konten pembelajaran offline), Application Support dapat digunakan dengan flag isExcludedFromBackup untuk file besar.
Tambahkan versi subdirektori di dalam Application Support. Saat pembaruan, periksa versi data saat ini dan jika perlu buat subdirektori baru, simpan yang lama untuk rollback. Hapus direktori lama hanya setelah konfirmasi bahwa semua pengguna telah berhasil migrasi ke versi data baru.
Secara tidak langsung — ya. Jika Application Support berisi puluhan ribu file kecil, FileManager.enumerator dapat memperlambat inisialisasi. Disarankan membatasi jumlah file di Application Support (tidak lebih dari 1000) dan menggunakan database (Core Data, Realm) daripada banyak file terpisah untuk data terstruktur.
Kesimpulan
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.
Baca juga