iCloud Drive est le stockage de fichiers cloud d'Apple intégré à iOS, macOS et iPadOS pour synchroniser les documents entre les appareils de l'utilisateur. Selon Apple, 2024, iCloud Drive utilise CloudKit comme backend pour stocker les fichiers et la synchronisation automatique : les modifications apportées sur un iPhone sont instantanément répercutées sur Mac et iPad sans action de l'utilisateur. Les développeurs peuvent intégrer iCloud Drive dans les applications via NSDocumentPickerViewController et l'API Ubiquity.
Points clés
iCloud Drive est le service de fichiers cloud d'Apple qui fournit un stockage unifié de documents pour tous les appareils de l'utilisateur autorisés avec le même identifiant Apple. Le service a été lancé en 2014 avec iOS 8 et OS X Yosemite pour remplacer iCloud Documents.
iCloud Drive se distingue des autres services de stockage cloud (Google Drive, Dropbox) par son intégration profonde avec le système d'exploitation : les fichiers apparaissent directement dans le Finder sur macOS et dans l'application Fichiers sur iOS, sans nécessiter l'installation d'une application supplémentaire. Le système synchronise automatiquement le contenu en arrière-plan, en alternant entre les réseaux Wi-Fi et cellulaires.
Selon Apple Platform Overview, 2024, iCloud Drive prend en charge le versionnage des fichiers jusqu'à 30 jours, le partage de dossiers via iCloud Sharing et l'intégration avec la recherche système Spotlight. Les développeurs accèdent au stockage via l'API NSFileCoordinator et les conteneurs Ubiquity.
Ubiquity est un terme d'Apple désignant la capacité des données à être « présentes partout ». Dans le contexte d'iCloud Drive, il s'agit d'un mécanisme qui permet aux fichiers d'être automatiquement synchronisés sur tous les appareils de l'utilisateur via le backend cloud CloudKit.
| Composant | Description | Rôle |
|---|---|---|
| Conteneur Ubiquity | Répertoire spécial de l'application | Stocke les fichiers pour synchronisation |
| CloudKit | Service backend d'Apple | Assure le stockage et la synchronisation |
| NSMetadataQuery | Requête système | Suivi de l'état des fichiers Ubiquity |
| NSFileVersion | Gestion des versions | Résout les conflits de modifications |
Le conteneur Ubiquity est un répertoire dans le bac à sable de l'application marqué pour la synchronisation. Les fichiers placés dans ce répertoire sont automatiquement téléchargés vers iCloud Drive et distribués aux autres appareils. L'accès au conteneur est configuré via les Capabilities dans Xcode.
Le système suit l'état de chaque fichier via NSMetadataQuery : un fichier peut être local (téléchargé sur l'appareil), distant (uniquement dans le cloud) ou en cours de téléchargement. Le développeur peut demander programmatiquement le téléchargement d'un fichier ou vérifier sa disponibilité avant de l'ouvrir.
L'intégration d'iCloud Drive commence par l'ajout de la capacité iCloud dans Xcode et l'activation du service iCloud Documents. Ensuite, l'application accède au conteneur Ubiquity, un répertoire spécial dont le chemin est renvoyé via FileManager.
import UIKit
class DocumentManager {
func ubiquityURL() -> URL? {
return FileManager.default
.url(forUbiquityContainer: nil)
}
func saveToICloud(data: Data, filename: String) {
guard let containerURL = ubiquityURL() else { return }
let fileURL = containerURL
.appendingPathComponent(filename)
do {
try data.write(to: fileURL)
Logger.storage.info(
"Saved \(filename) to iCloud Drive"
)
} catch {
Logger.storage.error(
"Save failed: \(error.localizedDescription)"
)
}
}
func listICloudFiles() {
let query = NSMetadataQuery()
query.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope]
query.start()
}
}
NSDocumentPickerViewController fournit une interface utilisateur système pour sélectionner et importer des fichiers depuis iCloud Drive. L'utilisateur voit un navigateur de fichiers standard avec prise en charge de la recherche, du tri et de la sélection multiple. Après la sélection du fichier, l'application reçoit son URL et peut travailler avec via NSFileCoordinator.
Règle importante : lors du travail avec les fichiers iCloud Drive, vous devez utiliser NSFileCoordinator pour la lecture et l'écriture. Cela garantit que le fichier n'est pas modifié par un autre processus (par exemple, la synchronisation) pendant l'opération. Négliger la coordination peut entraîner une corruption des données.
Les conflits de versions surviennent lorsqu'un fichier est modifié sur deux appareils simultanément avant la fin de la synchronisation. iOS détecte automatiquement ces situations via NSFileVersion et crée des versions conflictuelles que l'utilisateur ou l'application doit résoudre.
func resolveConflicts(for fileURL: URL) {
let conflictVersions = NSFileVersion
.unresolvedConflictVersionsOfItem(at: fileURL) ?? []
for version in conflictVersions {
do {
let conflictData = try Data(contentsOf: version.url)
let resolved = mergeData(
original: try Data(contentsOf: fileURL),
conflict: conflictData
)
try resolved.write(to: fileURL)
version.remove()
} catch {
Logger.sync.error(
"Conflict resolution failed: \(error)"
)
}
}
}
NSFileVersion stocke l'historique des modifications du fichier jusqu'à 30 jours. Chaque version contient une URL, une date de création et un identifiant de l'appareil ayant créé la version. Le système marque automatiquement les versions comme conflictuelles lorsque deux appareils envoient des modifications avec le même identifiant de base.
Stratégies de résolution : l'application peut fusionner automatiquement les modifications (pour les formats pris en charge), afficher un choix de version à l'utilisateur ou utiliser une stratégie de « dernier écrit » (last-writer-wins). Apple recommande la fusion automatique pour les données textuelles et structurées, et l'affichage des versions conflictuelles pour les formats binaires.
Le stockage gratuit d'iCloud est de 5 Go, répartis entre tous les services de l'utilisateur : sauvegardes, photos, courrier et iCloud Drive. Les forfaits payants commencent à 50 Go et vont jusqu'à 12 To. Pour les applications avec un échange intensif de fichiers, il est essentiel de prendre en compte ces limites.
Optimisation du stockage : iOS fournit un mécanisme d'expulsion des fichiers. Lorsque l'espace local vient à manquer, le système peut supprimer les copies mises en cache des fichiers iCloud Drive, ne laissant que les métadonnées. En essayant d'ouvrir un tel fichier, le système le télécharge automatiquement depuis le cloud. Le développeur peut contrôler ce processus via NSFileCoordinator et vérifier l'état du fichier via NSMetadataUbiquitousItemDownloadingStatusKey.
Selon la WWDC 2022, Apple recommande les pratiques suivantes pour optimiser iCloud Drive : stocker uniquement les documents utilisateur dans le conteneur Ubiquity, pas le cache de l'application ; utiliser un téléchargement asynchrone avec indication de progression ; fournir à l'utilisateur des informations sur la taille du fichier avant le téléchargement ; implémenter la reprise pour les fichiers volumineux.
Nuance importante : la suppression d'un fichier du conteneur Ubiquity le supprime de tous les appareils de l'utilisateur. Pour les fichiers temporaires, utilisez le répertoire local Documents plutôt que le conteneur Ubiquity. Notez également que la synchronisation n'est pas instantanée : le délai peut varier de quelques secondes à minutes selon la taille du fichier et le réseau.
Foire aux questions
iCloud Drive est le stockage de fichiers cloud d'Apple qui synchronise les documents entre iPhone, iPad, Mac et PC. Il est intégré au Finder et à l'application Fichiers, permettant de travailler avec des documents sans applications supplémentaires.
La synchronisation fonctionne via CloudKit : les fichiers du conteneur Ubiquity de l'application sont automatiquement téléchargés vers le cloud et distribués aux autres appareils de l'utilisateur. Le système utilise NSMetadataQuery pour le suivi et NSFileCoordinator pour l'accès sécurisé.
Ajoutez la capacité iCloud dans Xcode, activez le service iCloud Documents et utilisez FileManager.url(forUbiquityContainer:) pour obtenir le chemin du répertoire synchronisé. Utilisez NSDocumentPickerViewController pour la sélection de fichiers.
iOS crée des versions conflictuelles via NSFileVersion. Le développeur peut fusionner automatiquement les modifications ou proposer un choix à l'utilisateur. Le système stocke les versions jusqu'à 30 jours et marque automatiquement les conflits lors de modifications simultanées depuis différents appareils.
Le stockage gratuit est de 5 Go pour tous les services iCloud. Forfaits payants : 50 Go, 200 Go, 2 To, 6 To et 12 To. Pour les fichiers volumineux, implémentez la reprise et vérifiez l'espace disponible avant d'écrire.
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