Application Support: mi ez, konfigurációk tárolása és Core Data

Szerző: IT Sectr Megjelenés: 2026-07-10 Olvasási idő: 10 perc

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 — könyvtár azon adatok számára, amelyeket az alkalmazás saját működéséhez hoz létre, nem a felhasználó számára.
  • Az Application Support fájljai automatikusan biztonsági mentésre kerülnek az iCloud-ba és iTunes-ba, ha nincs kivételjelölő beállítva.
  • Útvonal a könyvtárhoz — NSApplicationSupportDirectory vagy FileManager.urls(for: .applicationSupportDirectory).
  • A Core Data alapértelmezés szerint az SQLite adatbázisokat az Application Support-ban helyezi el.
  • A felhasználónak nincs közvetlen hozzáférése az Application Support-hoz a Files vagy iTunes segítségével.

Mi az Application Support iOS-ben?

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.

Hogyan szerezhető meg az Application Support elérési útja

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.

swift
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.

objective-c
@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.

Milyen adatokat tároljunk az Application Support-ban

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.

Core Data és Realm adatbázisok

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.

Konfigurációs fájlok

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ípusApplication SupportAlternatíva
SQLite Core DataIgen (alapértelmezett)
Konfigurációk .plist / .jsonIgenUserDefaults (egyszerűekhez)
Letöltött referenciaanyagokIgenDocuments (ha felhasználónak)
Alkalmazás naplóiFeltételesCaches (naplókhoz)
Hitelesítési tokenekNemKeychain

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 és Application Support

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).

swift
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.

Application Support vs Documents Directory

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éterApplication SupportDocuments Directory
Felhasználói hozzáférésNem (rejtett)iTunes File Sharing segítségével
AdattípusAlkalmazás szolgáltatási adataiFelhasználói dokumentumok
iCloud biztonsági mentésIgen (alapértelmezett)Igen (alapértelmezett)
Törlési kockázatAlacsony (nincs hozzáférés)Közepes (hozzáférhető a felhasználó számára)
PéldaSQLite Core DataExportá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.

Legjobb gyakorlatok az Application Support használatához

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.

Mindig hozd létre a könyvtárat az első indításkor

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.

Használj alkönyvtárat Bundle Identifier-rel

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.

swift
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

Manuálisan kell létrehozni az Application Support Directory-t?

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.

Véletlenül törölheti a felhasználó az Application Support adatait?

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.

Alkalmas az Application Support a letöltött videók tárolására?

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.

Hogyan migráljuk az adatokat az Application Support-ból alkalmazásfrissítéskor?

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.

Befolyásolja az Application Support mérete az alkalmazás indítási sebességét?

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

  • Application Support — könyvtár az alkalmazás szolgáltatási adatai számára, amelyek nem a felhasználó közvetlen hozzáférésére szolgálnak.
  • Útvonal a könyvtárhoz — FileManager.urls(for: .applicationSupportDirectory) vagy NSSearchPathForDirectoriesInDomains NSApplicationSupportDirectory paraméterrel.
  • A könyvtárat manuálisan kell létrehozni az alkalmazás első indításakor.
  • A Core Data alapértelmezés szerint az SQLite adatbázisokat az Application Support-ban helyezi el.
  • A felhasználónak nincs hozzáférése az Application Support-hoz a Files vagy iTunes segítségével.
  • Az Application Support fájljai biztonsági mentésre kerülnek az iCloud-ba, ha az isExcludedFromBackup nincs beállítva.
  • Hozz létre egy alkönyvtárat Bundle Identifier-rel az adatok elkülönítéséhez és a migráció egyszerűsítéséhez.

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