iCloud Drive: cos'è, archiviazione cloud Apple e come funziona

Autore: IT Sectr Pubblicato: 2026-07-11 Tempo di lettura: 6 min

iCloud Drive è l'archiviazione di file cloud di Apple integrata in iOS, macOS e iPadOS per sincronizzare i documenti tra i dispositivi dell'utente. Secondo Apple, 2024, iCloud Drive utilizza CloudKit come backend per l'archiviazione dei file e la sincronizzazione automatica: le modifiche apportate su iPhone vengono immediatamente riflesse su Mac e iPad senza alcuna azione da parte dell'utente. Gli sviluppatori possono integrare iCloud Drive nelle applicazioni tramite NSDocumentPickerViewController e l'API Ubiquity.

Punti chiave

  • iCloud Drive è l'archiviazione cloud di Apple per sincronizzare i file tra i dispositivi
  • CloudKit è il backend di iCloud che fornisce archiviazione e sincronizzazione dei dati
  • Contenitore Ubiquity è una directory speciale per archiviare i file sincronizzati dell'applicazione
  • NSDocumentPickerViewController è il controller di sistema per importare ed esportare file iCloud
  • Conflitti di versione vengono risolti automaticamente tramite NSFileVersion con creazione di copie in conflitto

Cos'è iCloud Drive in iOS?

iCloud Drive è il servizio di file cloud di Apple che fornisce un archivio unificato di documenti per tutti i dispositivi dell'utente autorizzati con lo stesso Apple ID. Il servizio è stato lanciato nel 2014 insieme a iOS 8 e OS X Yosemite come sostituto di iCloud Documents.

iCloud Drive si differenzia da altri servizi di archiviazione cloud (Google Drive, Dropbox) per la sua profonda integrazione con il sistema operativo: i file appaiono direttamente in Finder su macOS e nell'app File su iOS, senza bisogno di installare un'app aggiuntiva. Il sistema sincronizza automaticamente il contenuto in background, alternando tra reti Wi-Fi e cellulari.

Secondo Apple Platform Overview, 2024, iCloud Drive supporta il versionamento dei file fino a 30 giorni, la condivisione di cartelle tramite iCloud Sharing e l'integrazione con la ricerca di sistema Spotlight. Gli sviluppatori accedono all'archiviazione tramite l'API NSFileCoordinator e i contenitori Ubiquity.

Architettura di iCloud Drive e Ubiquity

Ubiquity è un termine Apple che indica la capacità dei dati di essere “presenti ovunque.” Nel contesto di iCloud Drive, questo è un meccanismo che consente ai file di essere automaticamente sincronizzati su tutti i dispositivi dell'utente tramite il backend cloud CloudKit.

ComponenteDescrizioneRuolo
Contenitore UbiquityDirectory speciale dell'appArchivia file per la sincronizzazione
CloudKitServizio backend AppleFornisce archiviazione e sincronizzazione
NSMetadataQueryQuery di sistemaTiene traccia dello stato dei file Ubiquity
NSFileVersionGestione delle versioniRisolve i conflitti di modifica

Il contenitore Ubiquity è una directory all'interno del Sandbox dell'app contrassegnata per la sincronizzazione. I file inseriti in questa directory vengono automaticamente caricati su iCloud Drive e distribuiti ad altri dispositivi. L'accesso al contenitore viene configurato tramite Capabilities in Xcode.

Il sistema tiene traccia dello stato di ciascun file tramite NSMetadataQuery: un file può essere locale (scaricato sul dispositivo), remoto (solo nel cloud) o in fase di download. Lo sviluppatore può richiedere programmaticamente il download di un file o verificarne la disponibilità prima di aprirlo.

Integrare iCloud Drive in un'app

L'integrazione di iCloud Drive inizia aggiungendo la capacità iCloud in Xcode e abilitando il servizio iCloud Documents. Successivamente, l'app ottiene l'accesso al contenitore Ubiquity, una directory speciale il cui percorso viene restituito tramite FileManager.

swift
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 fornisce un'interfaccia utente di sistema per selezionare e importare file da iCloud Drive. L'utente vede un browser di file standard con supporto per ricerca, ordinamento e selezione multipla. Dopo la selezione del file, l'app riceve il suo URL e può lavorarci tramite NSFileCoordinator.

Regola importante: quando si lavora con file iCloud Drive, è necessario utilizzare NSFileCoordinator per la lettura e la scrittura. Ciò garantisce che il file non venga modificato da un altro processo (ad esempio, la sincronizzazione) durante l'operazione. Trascurare il coordinamento può portare al danneggiamento dei dati.

Risoluzione dei conflitti e NSFileVersion

Conflitti di versione si verificano quando un file viene modificato su due dispositivi contemporaneamente prima del completamento della sincronizzazione. iOS rileva automaticamente tali situazioni tramite NSFileVersion e crea versioni in conflitto che l'utente o l'app devono risolvere.

swift
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 memorizza la cronologia delle modifiche del file fino a 30 giorni. Ogni versione contiene un URL, la data di creazione e l'identificatore del dispositivo che ha creato la versione. Il sistema contrassegna automaticamente le versioni come in conflitto quando due dispositivi inviano modifiche con lo stesso identificatore di base.

Strategie di risoluzione: l'app può unire automaticamente le modifiche (per i formati supportati), mostrare all'utente una scelta di versione o utilizzare una strategia “ultimo scrittore” (last-writer-wins). Apple raccomanda l'unione automatica per dati testuali e strutturati, e la visualizzazione delle versioni in conflitto per i formati binari.

Limiti di archiviazione e ottimizzazione

L'archiviazione gratuita di iCloud è di 5 GB, distribuita tra tutti i servizi dell'utente: backup, foto, posta e iCloud Drive. I piani a pagamento partono da 50 GB e arrivano fino a 12 TB. Per le applicazioni con scambio intensivo di file, è fondamentale tenere conto di questi limiti.

Ottimizzazione dell'archiviazione: iOS fornisce un meccanismo di espulsione dei file—quando lo spazio locale si esaurisce, il sistema può rimuovere le copie cache dei file iCloud Drive, lasciando solo i metadati. Quando si tenta di aprire tale file, il sistema lo scarica automaticamente dal cloud. Lo sviluppatore può controllare questo processo tramite NSFileCoordinator e verificare lo stato del file tramite NSMetadataUbiquitousItemDownloadingStatusKey.

Secondo WWDC 2022, Apple raccomanda le seguenti pratiche per ottimizzare iCloud Drive: archiviare solo i documenti dell'utente nel contenitore Ubiquity, non la cache dell'app; utilizzare il download asincrono con indicazione di progresso; fornire all'utente informazioni sulla dimensione del file prima del download; implementare il supporto per la ripresa di file di grandi dimensioni.

Sfumatura importante: l'eliminazione di un file dal contenitore Ubiquity lo rimuove da tutti i dispositivi dell'utente. Per i file temporanei, utilizzare la directory locale Documents anziché il contenitore Ubiquity. Si noti inoltre che la sincronizzazione non è istantanea—il ritardo può variare da pochi secondi a minuti a seconda della dimensione del file e della rete.

Domande frequenti

Cos'è iCloud Drive?

iCloud Drive è l'archiviazione di file cloud di Apple che sincronizza i documenti tra iPhone, iPad, Mac e PC. È integrato in Finder e nell'app File, consentendo di lavorare con i documenti senza applicazioni aggiuntive.

Come sincronizza i file iCloud Drive?

La sincronizzazione funziona tramite CloudKit: i file dal contenitore Ubiquity dell'app vengono automaticamente caricati sul cloud e distribuiti agli altri dispositivi dell'utente. Il sistema utilizza NSMetadataQuery per il tracciamento e NSFileCoordinator per l'accesso sicuro.

Come integrare iCloud Drive in un'app?

Aggiungere la capacità iCloud in Xcode, abilitare il servizio iCloud Documents e utilizzare FileManager.url(forUbiquityContainer:) per ottenere il percorso della directory sincronizzata. Utilizzare NSDocumentPickerViewController per la selezione dei file.

Cosa fare in caso di conflitti di versione in iCloud Drive?

iOS crea versioni in conflitto tramite NSFileVersion. Lo sviluppatore può unire automaticamente le modifiche o mostrare all'utente una scelta. Il sistema memorizza le versioni fino a 30 giorni e contrassegna automaticamente i conflitti quando si verificano modifiche simultanee da dispositivi diversi.

Quali sono i limiti di iCloud Drive?

L'archiviazione gratuita è di 5 GB su tutti i servizi iCloud. Piani a pagamento: 50 GB, 200 GB, 2 TB, 6 TB e 12 TB. Per file di grandi dimensioni, implementare il supporto per la ripresa e verificare lo spazio disponibile prima della scrittura.

Riepilogo

  • iCloud Drive è l'archiviazione cloud di Apple con sincronizzazione automatica tra dispositivi tramite CloudKit
  • Contenitore Ubiquity è una directory speciale dell'app per archiviare file sincronizzati
  • NSMetadataQuery tiene traccia dello stato di download e della disponibilità dei file iCloud Drive
  • NSFileCoordinator è obbligatorio per la lettura e scrittura sicura dei file sincronizzati
  • Conflitti di versione vengono rilevati automaticamente e richiedono risoluzione tramite NSFileVersion
  • Ottimizzazione include l'espulsione dei file inutilizzati e il download asincrono con progresso
  • Limite gratuito è di 5 GB—per volumi maggiori è necessario un piano iCloud+ a pagamento

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche