Application Support est un répertoire dans le sandbox de l'application iOS conçu pour stocker les données auxiliaires nécessaires au fonctionnement de l'application, mais non créées directement par l'utilisateur. Selon Apple File System Basics (2024), ce répertoire est optimal pour les fichiers de configuration, les bases de données SQLite de Core Data, les documents mis en cache et autres données que l'application génère elle-même. Contrairement au répertoire Documents, Application Support n'apparaît pas dans iTunes File Sharing et l'utilisateur n'y a pas accès directement, ce qui protège les données de service contre une suppression accidentelle.
Points essentiels
Application Support est un répertoire dans le sandbox de l'application iOS conçu pour stocker les données que l'application crée et utilise pour son fonctionnement, mais qui ne sont pas des documents utilisateur. C'est l'emplacement principal pour les configurations, les bases de données, les métadonnées mises en cache et autres fichiers auxiliaires.
iOS désigne Application Support comme une couche intermédiaire entre Documents (données utilisateur) et Caches (données temporaires). Les fichiers dans Application Support peuvent être relativement permanents, mais l'utilisateur ne doit pas y avoir un accès direct — cela le distingue du répertoire Documents.
Selon la Documentation Développeur Apple (2024), Application Support est l'emplacement recommandé pour stocker les bases de données SQLite de Core Data, les fichiers Realm, les configurations au format JSON/plist, les documents de référence téléchargés et autres données que l'application utilise mais que l'utilisateur n'a pas explicitement créées.
Important : par défaut, Application Support est inclus dans la sauvegarde iCloud et iTunes. Si l'application stocke de grandes quantités de données dans ce répertoire qui peuvent être recréées (par exemple, des guides téléchargés), vous devez définir le drapeau isExcludedFromBackup pour les fichiers concernés.
En Swift, le chemin d'accès au répertoire Application Support est obtenu via FileManager.urls(for: .applicationSupportDirectory). Apple recommande de créer un sous-répertoire avec le nom de l'application dans Application Support pour isoler les données.
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Create app subdirectory
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
Objective-C utilise NSSearchPathForDirectoriesInDomains avec NSApplicationSupportDirectory. Comme avec Swift, il est recommandé de créer un sous-répertoire avec le nom de l'application.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
Au premier lancement, le répertoire Application Support peut ne pas exister — il doit être créé en utilisant createDirectory(at:withIntermediateDirectories:). Cela le distingue du répertoire Documents, qui est créé automatiquement par le système.
Application Support convient à une large gamme de données que l'application utilise pour son fonctionnement. Choisir les bonnes données pour ce répertoire améliore l'organisation du système de fichiers et simplifie la sauvegarde.
Les fichiers SQLite de Core Data sont créés dans Application Support par défaut. Realm recommande également de placer les bases de données dans ce répertoire. Cela isole les documents utilisateur des bases de données internes de l'application.
Fichiers JSON, plist, XML avec les paramètres de l'application, Feature Flags, métadonnées utilisateur mises en cache (mais pas les jetons d'authentification — utilisez Keychain pour ceux-ci).
| Type de donnée | Application Support | Alternative |
|---|---|---|
| SQLite Core Data | Oui (par défaut) | — |
| Configurations .plist / .json | Oui | UserDefaults (pour les simples) |
| Documents de référence téléchargés | Oui | Documents (si pour l'utilisateur) |
| Journaux de l'application | Conditionnellement | Caches (pour les journaux) |
| Jetons d'authentification | Non | Keychain |
Critère de sélection : si les données sont créées et utilisées par l'application, pas par l'utilisateur, et doivent persister entre les lancements — leur place est dans Application Support.
Core Data est l'un des principaux consommateurs d'Application Support. Lors de la création d'un NSPersistentContainer, Core Data place automatiquement les fichiers SQLite dans Library/Application Support avec un nom unique basé sur le nom du modèle.
Comprendre où Core Data stocke les fichiers est essentiel pour les migrations, la sauvegarde et le débogage. Principaux fichiers : .sqlite (données), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).
import CoreData
// Create Core Data container
let container = NSPersistentContainer(name: "MyAppModel")
// Custom store 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]
Lors de l'utilisation de la synchronisation Core Data avec CloudKit, le fichier SQLite reste dans Application Support et CloudKit agit comme une couche de transport. Dans ce cas, il est important de ne pas exclure les fichiers de la sauvegarde — sinon la synchronisation entre les appareils pourrait être interrompue.
La différence entre Application Support et Documents est l'une des plus importantes pour organiser correctement la structure de fichiers de l'application iOS. Un mauvais choix peut amener l'utilisateur à supprimer accidentellement des données importantes de l'application ou, inversement, à ne pas pouvoir trouver ses fichiers.
| Paramètre | Application Support | Répertoire Documents |
|---|---|---|
| Accès utilisateur | Non (caché) | Via iTunes File Sharing |
| Type de donnée | Données de service de l'application | Documents utilisateur |
| Sauvegarde iCloud | Oui (par défaut) | Oui (par défaut) |
| Risque de suppression | Faible (pas d'accès) | Moyen (accessible à l'utilisateur) |
| Exemple | SQLite Core Data | PDF exporté |
Règle simple : si l'utilisateur doit voir le fichier et pouvoir le supprimer — utilisez Documents. Si le fichier est nécessaire au fonctionnement de l'application mais que l'utilisateur n'a pas besoin de le savoir — utilisez Application Support. Si les données peuvent être recréées — utilisez Caches.
Travailler avec Application Support nécessite de prendre en compte plusieurs caractéristiques qui le distinguent des autres répertoires du sandbox. Suivre ces bonnes pratiques permet d'éviter la perte de données, les problèmes de migration et les comportements inattendus de l'application.
Contrairement à Documents, Application Support peut ne pas exister au premier lancement. Utilisez createDirectory(at:withIntermediateDirectories:) avec le paramètre withIntermediateDirectories: true pour garantir la création de toute la chaîne de sous-répertoires.
Créez un sous-répertoire avec le Bundle Identifier dans Application Support. Cela isole les données de votre application des autres applications (bien que le sandbox fournisse déjà l'isolation) et simplifie la migration lors d'un changement de fournisseur.
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
}
}
Suivre ces bonnes pratiques garantit que les données de service de l'application sont correctement organisées, protégées contre la suppression accidentelle par l'utilisateur et correctement restaurées à partir des sauvegardes.
Foire aux questions
Oui, Application Support n'est pas créé automatiquement lors de l'installation de l'application. Contrairement à Documents et Caches, que le système crée au premier lancement, Application Support doit être créé par le développeur en utilisant FileManager.createDirectory(at:withIntermediateDirectories:). Cela se fait généralement dans la méthode application(_:didFinishLaunchingWithOptions:).
Non, via l'interface standard d'iOS (Files, iTunes), l'utilisateur n'a pas accès à Application Support. Cependant, lorsque l'application elle-même est supprimée, tout le sandbox, y compris Application Support, est complètement supprimé. La sauvegarde iCloud reste jusqu'à la restauration ou la suppression manuelle.
Pour les vidéos téléchargées destinées à l'utilisateur, il est préférable d'utiliser le répertoire Documents afin que l'utilisateur puisse gérer ces fichiers via Files. Si la vidéo fait partie du cache interne de l'application (par exemple, du contenu de formation hors ligne), Application Support peut être utilisé avec le drapeau isExcludedFromBackup pour les fichiers volumineux.
Ajoutez un versionnement des sous-répertoires dans Application Support. Lors de la mise à jour, vérifiez la version actuelle des données et créez un nouveau sous-répertoire si nécessaire, en conservant l'ancien pour le rollback. Supprimez l'ancien répertoire uniquement après avoir confirmé que tous les utilisateurs ont migré avec succès vers la nouvelle version des données.
Indirectement — oui. Si Application Support contient des dizaines de milliers de petits fichiers, FileManager.enumerator peut ralentir l'initialisation. Il est recommandé de limiter le nombre de fichiers dans Application Support (pas plus de 1000) et d'utiliser des bases de données (Core Data, Realm) au lieu de nombreux fichiers individuels pour les données structurées.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi