Application Support — is een directory in de sandbox van een iOS-app, bedoeld voor het opslaan van ondersteunende gegevens die nodig zijn voor de werking van de app, maar die niet direct door de gebruiker worden aangemaakt. Volgens Apple File System Basics (2024) is deze directory optimaal voor configuratiebestanden, SQLite-databases van Core Data, gecachte documenten en andere gegevens die de app zelfstandig genereert. In tegenstelling tot Documents Directory wordt Application Support niet weergegeven in iTunes File Sharing en heeft de gebruiker er geen directe toegang toe, wat servicegegevens beschermt tegen onbedoeld verwijderen.
Belangrijkste punten
Application Support — is een directory in de sandbox van een iOS-app, bedoeld voor het opslaan van gegevens die de app aanmaakt en gebruikt voor zijn werking, maar die geen gebruikersdocumenten zijn. Dit is de primaire locatie voor configuraties, databases, gecachte metadata en andere ondersteunende bestanden.
iOS onderscheidt Application Support als tussenliggend niveau tussen Documents (gebruikersgegevens) en Caches (tijdelijke gegevens). Bestanden in Application Support kunnen relatief permanent zijn, maar de gebruiker zou er geen directe toegang toe moeten hebben — dit onderscheidt het van Documents Directory.
Volgens Apple Developer Documentation (2024) is Application Support de aanbevolen locatie voor het opslaan van Core Data SQLite-databases, Realm-bestanden, configuraties in JSON/plist-formaat, gedownloade referentiematerialen en andere gegevens die de app gebruikt, maar die de gebruiker niet expliciet heeft aangemaakt.
Belangrijk: standaard is Application Support opgenomen in de iCloud- en iTunes-back-up. Als de app grote hoeveelheden herbruikbare gegevens in deze directory opslaat (bijv. gedownloade handleidingen), moet de vlag isExcludedFromBackup worden ingesteld voor de betreffende bestanden.
In Swift wordt het pad naar Application Support Directory verkregen via FileManager.urls(for: .applicationSupportDirectory). Apple raadt aan om een subdirectory met de app-naam aan te maken binnen Application Support voor gegevensisolatie.
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Maak app-subdirectory aan
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
Objective-C gebruikt NSSearchPathForDirectoriesInDomains met NSApplicationSupportDirectory. Net als in Swift wordt aanbevolen een subdirectory met de app-naam aan te maken.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
Bij de eerste start bestaat de Application Support-directory mogelijk niet — deze moet worden aangemaakt met createDirectory(at:withIntermediateDirectories:). Dit onderscheidt het van Documents Directory, die automatisch door het systeem wordt aangemaakt.
Application Support is geschikt voor een breed scala aan gegevens die de app gebruikt voor zijn werking. De juiste gegevenskeuze voor deze directory verbetert de bestandssysteemorganisatie en vereenvoudigt back-ups.
SQLite-bestanden van Core Data worden standaard aangemaakt in Application Support. Realm raadt ook aan databases in deze directory te plaatsen. Dit isoleert gebruikersdocumenten van de interne databases van de app.
JSON, plist, XML-bestanden met app-instellingen, Feature Flags, gecachte metadata over de gebruiker (maar geen authenticatietokens — daarvoor is Keychain).
| Gegevenstype | Application Support | Alternatief |
|---|---|---|
| SQLite Core Data | Ja (standaard) | — |
| Configuraties .plist / .json | Ja | UserDefaults (voor eenvoudige) |
| Gedownloade referentiematerialen | Ja | Documents (indien voor gebruiker) |
| Logboeken van de app | Voorwaardelijk | Caches (voor logboeken) |
| Authenticatie-tokens | Nee | Keychain |
Selectiecriterium: als gegevens worden aangemaakt en gebruikt door de app, niet door de gebruiker, en moeten worden bewaard tussen starts — dan is hun plaats in Application Support.
Core Data — een van de belangrijkste gebruikers van Application Support. Bij het aanmaken van NSPersistentContainer plaatst Core Data automatisch SQLite-bestanden in Library/Application Support met een unieke naam op basis van de modelnaam.
Begrijpen waar Core Data bestanden opslaat is cruciaal voor migraties, back-ups en debuggen. Belangrijkste bestanden: .sqlite (gegevens), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).
import CoreData
// Maak Core Data-container aan
let container = NSPersistentContainer(name: "MyAppModel")
// Aangepaste winkel-URL-directory
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]
Bij gebruik van CloudKit synchronisatie voor Core Data blijft het SQLite-bestand in Application Support en wordt CloudKit gebruikt als transportlaag. In dit geval is het belangrijk bestanden niet uit te sluiten van back-up — anders kan synchronisatie tussen apparaten worden verstoord.
Het verschil tussen Application Support en Documents — een van de belangrijkste voor een correcte organisatie van de bestandsstructuur van een iOS-app. Een verkeerde keuze kan ertoe leiden dat de gebruiker per ongeluk belangrijke app-gegevens verwijdert of, omgekeerd, zijn eigen bestanden niet kan vinden.
| Parameter | Application Support | Documents Directory |
|---|---|---|
| Gebruikerstoegang | Nee (verborgen) | Via iTunes File Sharing |
| Gegevenstype | Servicegegevens van de app | Gebruikersdocumenten |
| iCloud back-up | Ja (standaard) | Ja (standaard) |
| Verwijderrisico | Laag (geen toegang) | Gemiddeld (toegankelijk voor gebruiker) |
| Voorbeeld | SQLite Core Data | Geëxporteerde PDF |
Eenvoudige regel: als de gebruiker het bestand moet zien en moet kunnen verwijderen — gebruik Documents. Als het bestand nodig is voor de werking van de app, maar de gebruiker hoeft er niet van te weten — gebruik Application Support. Als gegevens kunnen worden hersteld — gebruik Caches.
Werken met Application Support vereist het in acht nemen van verschillende kenmerken die het onderscheiden van andere directories in de sandbox. Het naleven van deze praktijken helpt gegevensverlies, migratieproblemen en onverwacht app-gedrag te voorkomen.
In tegenstelling tot Documents kan Application Support bij de eerste start niet bestaan. Gebruik createDirectory(at:withIntermediateDirectories:) met parameter withIntermediateDirectories: true om de aanmaak van de volledige keten van subdirectories te garanderen.
Maak een subdirectory met Bundle Identifier aan binnen Application Support. Dit isoleert de gegevens van jouw app van gegevens van andere apps (hoewel de sandbox al isolatie biedt) en vereenvoudigt migratie bij een leverancierswissel.
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
}
}
Het naleven van deze praktijken garandeert dat de servicegegevens van de app correct zijn georganiseerd, beschermd tegen onbedoeld verwijderen door de gebruiker en correct worden hersteld uit back-ups.
Veelgestelde vragen
Ja, Application Support wordt niet automatisch aangemaakt bij installatie van de app. In tegenstelling tot Documents en Caches, die door het systeem worden aangemaakt bij de eerste start, moet Application Support door de ontwikkelaar worden aangemaakt met FileManager.createDirectory(at:withIntermediateDirectories:). Dit gebeurt meestal in de methode application(_:didFinishLaunchingWithOptions:).
Nee, via de standaard iOS-interface (Files, iTunes) heeft de gebruiker geen toegang tot Application Support. Bij het verwijderen van de app zelf wordt echter de hele sandbox, inclusief Application Support, volledig verwijderd. De back-up in iCloud blijft behouden tot herstel of handmatige verwijdering.
Voor gedownloade video's die voor de gebruiker zijn bestemd, is het beter Documents Directory te gebruiken — zodat de gebruiker deze bestanden via Files kan beheren. Als de video deel uitmaakt van de interne cache van de app (bijv. offline leermateriaal), kan Application Support worden gebruikt met de vlag isExcludedFromBackup voor grote bestanden.
Voeg versiebeheer van subdirectories toe binnen Application Support. Controleer bij een update de huidige gegevensversie en maak indien nodig een nieuwe subdirectory aan, terwijl je de oude behoudt voor rollback. Verwijder de oude directory pas nadat is bevestigd dat alle gebruikers succesvol zijn gemigreerd naar de nieuwe gegevensversie.
Indirect — ja. Als Application Support tienduizenden kleine bestanden bevat, kan FileManager.enumerator de initialisatie vertragen. Het wordt aanbevolen het aantal bestanden in Application Support te beperken (niet meer dan 1000) en databases (Core Data, Realm) te gebruiken in plaats van meerdere afzonderlijke bestanden voor gestructureerde gegevens.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook