Application Support: co to je, ukládání konfigurací a Core Data

Autor: IT Sectr Publikováno: 2026-07-10 Doba čtení: 10 min

Application Support — je adresář v sandboxu iOS aplikace určený k ukládání pomocných dat nezbytných pro činnost aplikace, ale které nejsou vytvářeny přímo uživatelem. Podle Apple File System Basics (2024) je tento adresář optimální pro konfigurační soubory, SQLite databáze Core Data, cacheované dokumenty a další data, která aplikace generuje samostatně. Na rozdíl od Documents Directory není Application Support zobrazen v iTunes File Sharing a uživatel k němu nemá přímý přístup, což chrání servisní data před náhodným smazáním.

Hlavní body

  • Application Support — adresář pro data, která aplikace vytváří pro svou vlastní činnost, neurčená uživateli.
  • Soubory z Application Support jsou automaticky zálohovány do iCloud a iTunes, pokud není nastaven příznak vyloučení.
  • Cesta k adresáři — NSApplicationSupportDirectory nebo FileManager.urls(for: .applicationSupportDirectory).
  • Core Data ve výchozím nastavení umisťuje SQLite databáze do Application Support.
  • Uživatel nemá přímý přístup k Application Support přes Files nebo iTunes.

Co je Application Support v iOS?

Application Support — je adresář v sandboxu iOS aplikace určený k ukládání dat, která aplikace vytváří a používá pro svou činnost, ale která nejsou uživatelskými dokumenty. Je to hlavní místo pro konfigurace, databáze, cacheovaná metadata a další pomocné soubory.

iOS rozlišuje Application Support jako mezistupeň mezi Documents (uživatelská data) a Caches (dočasná data). Soubory v Application Support mohou být relativně trvalé, ale uživatel by k nim neměl mít přímý přístup — to ho odlišuje od Documents Directory.

Podle Apple Developer Documentation (2024) je Application Support doporučeným místem pro ukládání SQLite databází Core Data, Realm souborů, konfigurací ve formátu JSON/plist, stažených referenčních materiálů a dalších dat, která aplikace používá, ale uživatel je explicitně nevytvořil.

Důležité: ve výchozím nastavení je Application Support zahrnuta do zálohy iCloud a iTunes. Pokud aplikace ukládá velké objemy dat, která lze obnovit v tomto adresáři (např. stažené příručky), je nutné nastavit příznak isExcludedFromBackup pro příslušné soubory.

Jak získat cestu k Application Support

V Swift se cesta k Application Support Directory získává přes FileManager.urls(for: .applicationSupportDirectory). Apple doporučuje vytvořit podadresář s názvem aplikace uvnitř Application Support pro izolaci dat.

swift
import Foundation

let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
    for: .applicationSupportDirectory,
    in: .userDomainMask
).first else { return }

// Vytvořit podadresář aplikace
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
    at: appDir,
    withIntermediateDirectories: true
)

Objective-C používá NSSearchPathForDirectoriesInDomains s NSApplicationSupportDirectory. Stejně jako ve Swiftu se doporučuje vytvořit podadresář s názvem aplikace.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSApplicationSupportDirectory,
    NSUserDomainMask,
    YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];

Při prvním spuštění adresář Application Support nemusí existovat — je třeba ho vytvořit pomocí createDirectory(at:withIntermediateDirectories:). To ho odlišuje od Documents Directory, který je vytvářen automaticky systémem.

Jaká data ukládat v Application Support

Application Support je vhodný pro širokou škálu dat, která aplikace používá pro svou činnost. Správný výběr dat pro tento adresář zlepšuje organizaci souborového systému a zjednodušuje zálohování.

Core Data a Realm databáze

SQLite soubory Core Data jsou ve výchozím nastavení vytvářeny v Application Support. Realm také doporučuje umisťovat databáze do tohoto adresáře. To izoluje uživatelské dokumenty od interních databází aplikace.

Konfigurační soubory

JSON, plist, XML soubory s nastaveními aplikace, Feature Flags, cacheovaná metadata o uživateli (ale ne autentizační tokeny — pro ty je Keychain).

Typ datApplication SupportAlternativa
SQLite Core DataAno (výchozí)
Konfigurace .plist / .jsonAnoUserDefaults (pro jednoduché)
Stažené referenční materiályAnoDocuments (pokud pro uživatele)
Logy aplikacePodmíněněCaches (pro logy)
Tokeny autentizaceNeKeychain

Kritérium výběru: pokud data vytváří a používá aplikace, ne uživatel, a mají být zachována mezi spuštěními — jejich místo je v Application Support.

Core Data a Application Support

Core Data — jeden z hlavních spotřebitelů Application Support. Při vytváření NSPersistentContainer Core Data automaticky umisťuje SQLite soubory do Library/Application Support s jedinečným názvem na základě názvu modelu.

Porozumění tomu, kde Core Data ukládá soubory, je kritické pro migrace, zálohování a ladění. Hlavní soubory: .sqlite (data), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).

swift
import CoreData

// Vytvořit kontejner Core Data
let container = NSPersistentContainer(name: "MyAppModel")

// Vlastní adresář URL obchodu
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]

Při použití synchronizace CloudKit pro Core Data zůstává SQLite soubor v Application Support a CloudKit je používán jako transportní vrstva. V tomto případě je důležité nevylučovat soubory ze zálohy — jinak může být synchronizace mezi zařízeními narušena.

Application Support vs Documents Directory

Rozdíl mezi Application Support a Documents — jeden z nejdůležitějších pro správnou organizaci souborové struktury iOS aplikace. Špatná volba může vést k náhodnému smazání důležitých dat aplikace uživatelem nebo naopak k neschopnosti najít vlastní soubory.

ParametrApplication SupportDocuments Directory
Přístup uživateleNe (skrytý)Přes iTunes File Sharing
Typ datServisní data aplikaceUživatelské dokumenty
Záloha iCloudAno (výchozí)Ano (výchozí)
Riziko smazáníNízké (bez přístupu)Střední (přístupné uživateli)
PříkladSQLite Core DataExportované PDF

Jednoduché pravidlo: pokud má uživatel soubor vidět a moci ho smazat — použij Documents. Pokud je soubor potřebný pro činnost aplikace, ale uživatel o něm nemusí vědět — použij Application Support. Pokud lze data obnovit — použij Caches.

Nejlepší postupy práce s Application Support

Práce s Application Support vyžaduje zohlednění několika vlastností, které ho odlišují od jiných adresářů v sandboxu. Dodržování těchto postupů pomáhá předcházet ztrátě dat, problémům s migrací a neočekávanému chování aplikace.

Vždy vytvářej adresář při prvním spuštění

Na rozdíl od Documents může Application Support při prvním spuštění chybět. Použij createDirectory(at:withIntermediateDirectories:) s parametrem withIntermediateDirectories: true, aby byla zaručena tvorba celého řetězce podadresářů.

Použij podadresář s Bundle Identifier

Vytvoř podadresář s Bundle Identifier uvnitř Application Support. To izoluje data tvé aplikace od dat jiných aplikací (ačkoli sandbox již izolaci zajišťuje) a zjednodušuje migraci při změně poskytovatele.

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

Dodržování těchto postupů zaručuje, že servisní data aplikace jsou správně organizována, chráněna před náhodným smazáním uživatelem a správně obnovena ze záloh.

Často kladené otázky

Je třeba vytvářet Application Support Directory ručně?

Ano, Application Support není vytvářen automaticky při instalaci aplikace. Na rozdíl od Documents a Caches, které systém vytváří při prvním spuštění, musí být Application Support vytvořen vývojářem pomocí FileManager.createDirectory(at:withIntermediateDirectories:). Obvykle se to dělá v metodě application(_:didFinishLaunchingWithOptions:).

Může uživatel náhodně smazat data z Application Support?

Ne, přes standardní rozhraní iOS (Files, iTunes) uživatel nemá přístup k Application Support. Při smazání samotné aplikace je však celý sandbox včetně Application Support zcela smazán. Záloha v iCloud je uchovávána do obnovení nebo ručního smazání.

Je Application Support vhodný pro ukládání stažených videí?

Pro stažená videa určená pro uživatele je lepší použít Documents Directory — aby uživatel mohl spravovat tyto soubory přes Files. Pokud je video součástí interní cache aplikace (např. offline výukový obsah), lze použít Application Support s příznakem isExcludedFromBackup pro velké soubory.

Jak migrovat data z Application Support při aktualizaci aplikace?

Přidej verzování podadresářů uvnitř Application Support. Při aktualizaci zkontroluj aktuální verzi dat a v případě potřeby vytvoř nový podadresář, starý ponechej pro rollback. Starý adresář odstraň až po potvrzení, že všichni uživatelé úspěšně migrovali na novou verzi dat.

Ovlivňuje velikost Application Support rychlost spouštění aplikace?

Nepřímo — ano. Pokud Application Support obsahuje desítky tisíc malých souborů, může FileManager.enumerator zpomalovat inicializaci. Doporučuje se omezit počet souborů v Application Support (ne více než 1000) a používat databáze (Core Data, Realm) místo mnoha jednotlivých souborů pro strukturovaná data.

Shrnutí

  • Application Support — adresář pro servisní data aplikace, která nejsou určena pro přímý přístup uživatele.
  • Cesta k adresáři — FileManager.urls(for: .applicationSupportDirectory) nebo NSSearchPathForDirectoriesInDomains s NSApplicationSupportDirectory.
  • Adresář je třeba ručně vytvořit při prvním spuštění aplikace.
  • Core Data ve výchozím nastavení umisťuje SQLite databáze do Application Support.
  • Uživatel nemá přístup k Application Support přes Files nebo iTunes.
  • Soubory z Application Support jsou zálohovány do iCloud, pokud není nastaveno isExcludedFromBackup.
  • Vytvoř podadresář s Bundle Identifier pro izolaci dat a zjednodušení migrace.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také