Application Support — egy könyvtár az iOS alkalmazás homokozójában, amely az alkalmazás működéséhez szükséges segédadatok tárolására szolgál, de amelyeket nem közvetlenül a felhasználó hoz létre. Az Apple File System Basics (2024) szerint ez a könyvtár optimális konfigurációs fájlok, Core Data SQLite adatbázisok, gyorsítótárazott dokumentumok és más, az alkalmazás által önállóan generált adatok számára. A Documents Directory-val ellentétben az Application Support nem jelenik meg az iTunes File Sharing-ben, és a felhasználónak nincs közvetlen hozzáférése hozzá, ami megvédi a szolgáltatási adatokat a véletlen törléstől.
Főbb pontok
Application Support — egy könyvtár az iOS alkalmazás homokozójában, amely az alkalmazás által létrehozott és használt adatok tárolására szolgál, de amelyek nem felhasználói dokumentumok. Ez az elsődleges hely a konfigurációk, adatbázisok, gyorsítótárazott metaadatok és más segédfájlok számára.
Az iOS az Application Support-ot köztes szintként különbözteti meg a Documents (felhasználói adatok) és a Caches (ideiglenes adatok) között. Az Application Support-ban lévő fájlok viszonylag állandóak lehetnek, de a felhasználónak nem kellene közvetlen hozzáféréssel rendelkeznie hozzájuk — ez különbözteti meg a Documents Directory-tól.
Az Apple Developer Documentation (2024) szerint az Application Support az ajánlott hely a Core Data SQLite adatbázisok, Realm fájlok, JSON/plist formátumú konfigurációk, letöltött referenciaanyagok és más, az alkalmazás által használt, de a felhasználó által nem explicit módon létrehozott adatok tárolására.
Fontos: alapértelmezés szerint az Application Support beleértendő az iCloud és iTunes biztonsági mentésbe. Ha az alkalmazás nagy mennyiségű helyreállítható adatot tárol ebben a könyvtárban (pl. letöltött útmutatókat), be kell állítani az isExcludedFromBackup jelölőt a megfelelő fájlokhoz.
Swift-ben az Application Support Directory elérési útja a FileManager.urls(for: .applicationSupportDirectory) segítségével szerezhető meg. Az Apple javasolja egy alkalmazás nevű alkönyvtár létrehozását az Application Support-on belül az adatok elkülönítéséhez.
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Alkalmazás alkönyvtárának létrehozása
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
Az Objective-C a NSSearchPathForDirectoriesInDomains függvényt használja az NSApplicationSupportDirectory paraméterrel. A Swift-hez hasonlóan javasolt egy alkönyvtár létrehozása az alkalmazás nevével.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
Az első indításkor az Application Support könyvtár még nem létezhet — létre kell hozni a createDirectory(at:withIntermediateDirectories:) segítségével. Ez különbözteti meg a Documents Directory-tól, amelyet a rendszer automatikusan hoz létre.
Application Support alkalmas az alkalmazás által működéséhez használt széles körű adatok számára. A megfelelő adatválasztás ehhez a könyvtárhoz javítja a fájlrendszer szervezését és egyszerűsíti a biztonsági mentést.
A Core Data SQLite fájljai alapértelmezés szerint az Application Support-ban jönnek létre. A Realm szintén javasolja az adatbázisok e könyvtárba helyezését. Ez elkülöníti a felhasználói dokumentumokat az alkalmazás belső adatbázisaitól.
JSON, plist, XML fájlok alkalmazásbeállításokkal, Feature Flags, gyorsítótárazott metaadatok a felhasználóról (de nem hitelesítési tokenek — azokhoz a Keychain).
| Adattípus | Application Support | Alternatíva |
|---|---|---|
| SQLite Core Data | Igen (alapértelmezett) | — |
| Konfigurációk .plist / .json | Igen | UserDefaults (egyszerűekhez) |
| Letöltött referenciaanyagok | Igen | Documents (ha felhasználónak) |
| Alkalmazás naplói | Feltételes | Caches (naplókhoz) |
| Hitelesítési tokenek | Nem | Keychain |
Kiválasztási kritérium: ha az adatokat az alkalmazás hozza létre és használja, nem a felhasználó, és meg kell őrizni az indítások között — a helyük az Application Support-ban van.
Core Data — az Application Support egyik fő fogyasztója. Az NSPersistentContainer létrehozásakor a Core Data automatikusan az SQLite fájlokat a Library/Application Support könyvtárba helyezi, egyedi névvel a modell neve alapján.
Annak megértése, hogy a Core Data hol tárolja a fájlokat, kritikus fontosságú a migrációkhoz, biztonsági mentéshez és hibakereséshez. Fő fájlok: .sqlite (adatok), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).
import CoreData
// Core Data tároló létrehozása
let container = NSPersistentContainer(name: "MyAppModel")
// Egyéni áruház URL könyvtár
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]
A CloudKit szinkronizáció használatakor a Core Data számára az SQLite fájl az Application Support-ban marad, a CloudKit pedig transzportrétegként szolgál. Ebben az esetben fontos, hogy ne zárjuk ki a fájlokat a biztonsági mentésből — különben az eszközök közötti szinkronizáció megszakadhat.
A Application Support és a Documents közötti különbség — az egyik legfontosabb az iOS alkalmazás fájlszerkezetének helyes megszervezéséhez. A rossz választás ahhoz vezethet, hogy a felhasználó véletlenül törli az alkalmazás fontos adatait, vagy éppen ellenkezőleg, nem találja a saját fájljait.
| Paraméter | Application Support | Documents Directory |
|---|---|---|
| Felhasználói hozzáférés | Nem (rejtett) | iTunes File Sharing segítségével |
| Adattípus | Alkalmazás szolgáltatási adatai | Felhasználói dokumentumok |
| iCloud biztonsági mentés | Igen (alapértelmezett) | Igen (alapértelmezett) |
| Törlési kockázat | Alacsony (nincs hozzáférés) | Közepes (hozzáférhető a felhasználó számára) |
| Példa | SQLite Core Data | Exportált PDF |
Egyszerű szabály: ha a felhasználónak látnia kell a fájlt és törölnie kell tudnia — használj Documents-t. Ha a fájl az alkalmazás működéséhez szükséges, de a felhasználónak nem kell tudnia róla — használj Application Support-ot. Ha az adatok helyreállíthatók — használj Caches-t.
Az Application Support-tal való munka néhány olyan jellemző figyelembevételét igényli, amelyek megkülönböztetik a homokozó más könyvtáraitól. E gyakorlatok betartása segít elkerülni az adatvesztést, a migrációs problémákat és az alkalmazás váratlan viselkedését.
A Documents-szal ellentétben az Application Support az első indításkor még nem létezhet. Használd a createDirectory(at:withIntermediateDirectories:) függvényt a withIntermediateDirectories: true paraméterrel, hogy garantáld a teljes alkönyvtárlánc létrehozását.
Hozz létre egy alkönyvtárat Bundle Identifier-rel az Application Support-on belül. Ez elkülöníti az alkalmazásod adatait más alkalmazások adataitól (bár a homokozó már biztosít elkülönítést), és egyszerűsíti a migrációt szolgáltatóváltáskor.
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
}
}
E gyakorlatok betartása garantálja, hogy az alkalmazás szolgáltatási adatai megfelelően szervezettek, védettek a felhasználó általi véletlen törléstől, és helyesen állíthatók vissza a biztonsági mentésekből.
Gyakran ismételt kérdések
Igen, az Application Support nem jön létre automatikusan az alkalmazás telepítésekor. A Documents-szal és Caches-szel ellentétben, amelyeket a rendszer hoz létre az első indításkor, az Application Support-ot a fejlesztőnek kell létrehoznia a FileManager.createDirectory(at:withIntermediateDirectories:) segítségével. Ez általában az application(_:didFinishLaunchingWithOptions:) metódusban történik.
Nem, a szabványos iOS interfészen (Files, iTunes) keresztül a felhasználónak nincs hozzáférése az Application Support-hoz. Az alkalmazás törlésekor azonban a teljes homokozó, beleértve az Application Support-ot is, teljesen törlődik. Az iCloud biztonsági mentés a visszaállításig vagy a kézi törlésig megmarad.
A felhasználónak szánt letöltött videókhoz jobb a Documents Directory-t használni — hogy a felhasználó kezelni tudja ezeket a fájlokat a Files-on keresztül. Ha a videó az alkalmazás belső gyorsítótárának része (pl. offline tanulási tartalom), az Application Support használható az isExcludedFromBackup jelölővel a nagy fájlokhoz.
Adj hozzá verziókezelést az alkönyvtárakhoz az Application Support-on belül. Frissítéskor ellenőrizd az aktuális adatverziót, és szükség esetén hozz létre egy új alkönyvtárat, a régit pedig tartsd meg a visszaállításhoz. A régi könyvtárat csak azután távolítsd el, miután megerősítést nyert, hogy minden felhasználó sikeresen migrált az adatok új verziójára.
Közvetve — igen. Ha az Application Support több tízezer kis fájlt tartalmaz, a FileManager.enumerator lelassíthatja az inicializálást. Javasolt korlátozni a fájlok számát az Application Support-ban (legfeljebb 1000), és adatbázisokat (Core Data, Realm) használni a strukturált adatokhoz a sok egyedi fájl helyett.
Összefoglalás
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.
Olvassa el is