iCloud Drive is een cloudbestandsopslag van Apple, ingebouwd in iOS, macOS en iPadOS voor het synchroniseren van documenten tussen de apparaten van de gebruiker. Volgens Apple, 2024, gebruikt iCloud Drive CloudKit als backend voor bestandsopslag en automatische synchronisatie: wijzigingen op de iPhone worden onmiddellijk weerspiegeld op Mac en iPad zonder tussenkomst van de gebruiker. Ontwikkelaars kunnen iCloud Drive integreren in apps via NSDocumentPickerViewController en Ubiquity API.
Belangrijkste
iCloud Drive is een cloudbestandsservice van Apple die een uniforme documentopslag biedt voor alle apparaten van de gebruiker die geautoriseerd zijn onder hetzelfde Apple ID. De service werd in 2014 gelanceerd samen met iOS 8 en OS X Yosemite als vervanging voor iCloud Documents.
iCloud Drive verschilt van andere cloudopslagen (Google Drive, Dropbox) door diepe integratie met het besturingssysteem: bestanden worden direct weergegeven in Finder op macOS en in de app Bestanden op iOS, zonder dat een extra app hoeft te worden geïnstalleerd. Het systeem synchroniseert automatisch de inhoud op de achtergrond, schakelend tussen Wi-Fi en mobiel netwerk.
Volgens Apple Platform Overview, 2024, ondersteunt iCloud Drive bestandsversiebeheer tot 30 dagen, het delen van mappen via iCloud Sharing en integratie met de systeemzoekopdracht Spotlight. Ontwikkelaars krijgen toegang tot de opslag via NSFileCoordinator API en Ubiquity containers.
Ubiquity — Apple-term die het vermogen van gegevens aangeeft om “overal aanwezig te zijn” (van Engels ubiquitous). In de context van iCloud Drive is dit een mechanisme dat bestanden automatisch laat synchroniseren tussen alle apparaten van de gebruiker via de cloudbackend CloudKit.
| Component | Beschrijving | Rol |
|---|---|---|
| Ubiquity container | Speciale app-map | Slaat bestanden op voor synchronisatie |
| CloudKit | Apple-backenddienst | Verzorgt opslag en synchronisatie |
| NSMetadataQuery | Systeemquery | Volgt de status van Ubiquity-bestanden |
| NSFileVersion | Versiebeheer | Lost wijzigingsconflicten op |
Ubiquity container is een map binnen de Sandbox van de app die is gemarkeerd voor synchronisatie. Bestanden die in deze map worden geplaatst, worden automatisch geüpload naar iCloud Drive en verspreid naar andere apparaten. Toegang tot de container wordt geconfigureerd via Capabilities in Xcode.
Het systeem volgt de status van elk bestand via NSMetadataQuery: een bestand kan lokaal zijn (gedownload op het apparaat), extern (alleen in de cloud) of wordt gedownload. De ontwikkelaar kan programmatisch het downloaden van een bestand aanvragen of de beschikbaarheid ervan controleren voordat het wordt geopend.
Integratie van iCloud Drive begint met het toevoegen van iCloud capability in Xcode en het inschakelen van de iCloud Documents-service. Daarna krijgt de app toegang tot de Ubiquity container — een speciale map waarvan het pad wordt teruggegeven 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 biedt een systeem-UI voor het selecteren en importeren van bestanden uit iCloud Drive. De gebruiker ziet een standaard bestandsbrowser met ondersteuning voor zoeken, sorteren en meervoudige selectie. Na selectie van een bestand ontvangt de app de URL en kan ermee werken via NSFileCoordinator.
Belangrijke regel: bij het werken met iCloud Drive-bestanden moet NSFileCoordinator worden gebruikt voor lezen en schrijven. Dit garandeert dat het bestand niet wordt gewijzigd door een ander proces (bijvoorbeeld synchronisatie) tijdens de bewerking. Het verwaarlozen van coördinatie kan leiden tot gegevensbeschadiging.
Versieconflicten ontstaan wanneer een bestand gelijktijdig op twee apparaten wordt gewijzigd voordat de synchronisatie is voltooid. iOS detecteert dergelijke situaties automatisch via NSFileVersion en maakt conflicterende versies die de gebruiker of app moeten oplossen.
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 bewaart de wijzigingsgeschiedenis van een bestand tot 30 dagen. Elke versie bevat een URL, aanmaakdatum en de identificatie van het apparaat dat de versie heeft gemaakt. Het systeem markeert versies automatisch als conflicterend wanneer twee apparaten wijzigingen met dezelfde basisidentificatie verzenden.
Oplossingsstrategieën: de app kan wijzigingen automatisch samenvoegen (voor ondersteunde formaten), de gebruiker een versiekeuze tonen of de strategie ‘laatste schrijver’ (last-writer-wins) toepassen. Apple raadt voor tekstuele en gestructureerde gegevens automatisch samenvoegen aan, en voor binaire formaten het tonen van conflicterende versies aan de gebruiker.
Gratis opslag van iCloud bedraagt 5 GB, verdeeld over alle diensten van de gebruiker: back-ups, foto’s, e-mail en iCloud Drive. Betaalde abonnementen beginnen bij 50 GB en gaan tot 12 TB. Voor apps met intensieve bestandsuitwisseling is het cruciaal om deze limieten in acht te nemen.
Opslagoptimalisatie: iOS biedt een mechanisme voor het vrijmaken van bestanden (eviction) — wanneer de lokale ruimte opraakt, kan het systeem de gecachete kopieën van iCloud Drive-bestanden verwijderen, waarbij alleen metadata overblijft. Bij het openen van een dergelijk bestand downloadt het systeem het automatisch uit de cloud. De ontwikkelaar kan dit proces beheren via NSFileCoordinator en de bestandsstatus controleren via NSMetadataUbiquitousItemDownloadingStatusKey.
Volgens WWDC 2022 beveelt Apple de volgende praktijken aan voor optimalisatie van iCloud Drive: bewaar in Ubiquity container alleen gebruikersdocumenten, niet de app-cache; gebruik asynchrone downloads met voortgangsindicator; geef de gebruiker informatie over de bestandsgrootte vóór het downloaden; implementeer ondersteuning voor hervatten voor grote bestanden.
Belangrijke nuance: het verwijderen van een bestand uit de Ubiquity container leidt tot verwijdering van alle apparaten van de gebruiker. Gebruik voor tijdelijke bestanden de lokale Documents-map, niet de Ubiquity container. Houd er ook rekening mee dat synchronisatie niet onmiddellijk is — de vertraging kan variëren van enkele seconden tot minuten, afhankelijk van de bestandsgrootte en het netwerk.
Veelgestelde vragen
iCloud Drive is een cloudbestandsopslag van Apple die documenten synchroniseert tussen iPhone, iPad, Mac en PC. Het is geïntegreerd in Finder en de Bestanden-app, waardoor u met documenten kunt werken zonder extra apps.
Synchronisatie werkt via CloudKit: bestanden uit de Ubiquity container van de app worden automatisch naar de cloud geüpload en verspreid naar andere apparaten van de gebruiker. Het systeem gebruikt NSMetadataQuery voor statuscontrole en NSFileCoordinator voor veilige toegang.
Voeg iCloud capability toe in Xcode, schakel de iCloud Documents-service in en gebruik FileManager.url(forUbiquityContainer:) om het pad naar de gesynchroniseerde map te krijgen. Gebruik NSDocumentPickerViewController voor het selecteren van bestanden.
iOS maakt conflicterende versies via NSFileVersion. De ontwikkelaar kan wijzigingen automatisch samenvoegen of de gebruiker een keuze tonen. Het systeem bewaart versies tot 30 dagen en markeert automatisch conflicten bij gelijktijdige wijzigingen van verschillende apparaten.
Gratis wordt 5 GB geboden voor alle iCloud-diensten. Betaalde abonnementen: 50 GB, 200 GB, 2 TB, 6 TB en 12 TB. Implementeer voor grote bestanden ondersteuning voor hervatten en controleer de beschikbare ruimte voordat u schrijft.
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