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 — 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.
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.
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.
@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.
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í.
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.
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 dat | Application Support | Alternativa |
|---|---|---|
| SQLite Core Data | Ano (výchozí) | — |
| Konfigurace .plist / .json | Ano | UserDefaults (pro jednoduché) |
| Stažené referenční materiály | Ano | Documents (pokud pro uživatele) |
| Logy aplikace | Podmíněně | Caches (pro logy) |
| Tokeny autentizace | Ne | Keychain |
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 — 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).
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.
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.
| Parametr | Application Support | Documents Directory |
|---|---|---|
| Přístup uživatele | Ne (skrytý) | Přes iTunes File Sharing |
| Typ dat | Servisní data aplikace | Uživatelské dokumenty |
| Záloha iCloud | Ano (výchozí) | Ano (výchozí) |
| Riziko smazání | Nízké (bez přístupu) | Střední (přístupné uživateli) |
| Příklad | SQLite Core Data | Exportované 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.
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.
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ářů.
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.
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
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:).
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í.
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.
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.
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í
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í.
Přečtěte si také