iCloud Drive este o stocare de fișiere în cloud Apple, integrată în iOS, macOS și iPadOS pentru sincronizarea documentelor între dispozitivele utilizatorului. Potrivit Apple, 2024, iCloud Drive utilizează CloudKit ca backend pentru stocarea fișierelor și sincronizarea automată: modificările făcute pe iPhone se reflectă instantaneu pe Mac și iPad fără acțiuni din partea utilizatorului. Dezvoltatorii pot integra iCloud Drive în aplicații prin NSDocumentPickerViewController și API Ubiquity.
Principalele
iCloud Drive este un serviciu de fișiere în cloud Apple, care oferă o stocare unitară de documente pentru toate dispozitivele utilizatorului autorizate sub același Apple ID. Serviciul a fost lansat în 2014 împreună cu iOS 8 și OS X Yosemite ca înlocuitor pentru iCloud Documents.
iCloud Drive se deosebește de alte stocări în cloud (Google Drive, Dropbox) prin integrarea profundă cu sistemul de operare: fișierele se afișează direct în Finder pe macOS și în aplicația Fișiere pe iOS, fără a fi necesară instalarea unei aplicații suplimentare. Sistemul sincronizează automat conținutul în fundal, comutând între Wi-Fi și rețeaua celulară.
Potrivit Apple Platform Overview, 2024, iCloud Drive suportă versionarea fișierelor până la 30 de zile, partajarea folderelor prin iCloud Sharing și integrarea cu căutarea de sistem Spotlight. Dezvoltatorii obțin acces la stocare prin API NSFileCoordinator și Ubiquity containers.
Ubiquity — termen Apple care desemnează capacitatea datelor de „a fi peste tot” (din engleză ubiquitous). În contextul iCloud Drive, acesta este un mecanism care permite fișierelor să se sincronizeze automat între toate dispozitivele utilizatorului prin backend-ul cloud CloudKit.
| Componentă | Descriere | Rol |
|---|---|---|
| Ubiquity container | Directorul special al aplicației | Stochează fișiere pentru sincronizare |
| CloudKit | Serviciu backend Apple | Asigură stocarea și sincronizarea |
| NSMetadataQuery | Interogare de sistem | Urmărește starea fișierelor Ubiquity |
| NSFileVersion | Gestionarea versiunilor | Rezolvă conflictele de modificări |
Ubiquity container este un director din interiorul Sandbox-ului aplicației marcat pentru sincronizare. Fișierele plasate în acest director sunt încărcate automat în iCloud Drive și distribuite pe alte dispozitive. Accesul la container se configurează prin Capabilities în Xcode.
Sistemul urmărește starea fiecărui fișier prin NSMetadataQuery: fișierul poate fi local (descărcat pe dispozitiv), la distanță (doar în cloud) sau în curs de descărcare. Dezvoltatorul poate solicita programatic descărcarea fișierului sau poate verifica disponibilitatea acestuia înainte de deschidere.
Integrarea iCloud Drive începe cu adăugarea capacității iCloud în Xcode și activarea serviciului iCloud Documents. După aceea, aplicația obține acces la Ubiquity container — un director special a cărui cale este returnată prin 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 oferă o interfață de sistem pentru selectarea și importarea fișierelor din iCloud Drive. Utilizatorul vede un browser de fișiere standard cu suport pentru căutare, sortare și selecție multiplă. După selectarea fișierului, aplicația primește URL-ul acestuia și poate lucra cu el prin NSFileCoordinator.
Regulă importantă: la lucrul cu fișierele iCloud Drive, trebuie utilizat NSFileCoordinator pentru citire și scriere. Aceasta garantează că fișierul nu va fi modificat de un alt proces (de exemplu, sincronizarea) în timpul operației. Neglijarea coordonării poate duce la deteriorarea datelor.
Conflictele de versiuni apar atunci când un fișier este modificat pe două dispozitive simultan înainte de finalizarea sincronizării. iOS detectează automat astfel de situații prin NSFileVersion și creează versiuni conflictuale pe care utilizatorul sau aplicația trebuie să le rezolve.
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 stochează istoricul modificărilor fișierului până la 30 de zile. Fiecare versiune conține URL, data creării și identificatorul dispozitivului care a creat versiunea. Sistemul marchează automat versiunile ca fiind conflictuale atunci când două dispozitive trimit modificări cu același identificator de bază.
Strategii de rezolvare: aplicația poate îmbina automat modificările (pentru formatele suportate), poate afișa utilizatorului alegerea versiunii sau poate utiliza strategia „ultimul care scrie” (last-writer-wins). Apple recomandă pentru date textuale și structurate îmbinarea automată, iar pentru formate binare — afișarea versiunilor conflictuale utilizatorului.
Stocarea gratuită iCloud este de 5 GB, distribuită între toate serviciile utilizatorului: copii de rezervă, fotografii, poștă și iCloud Drive. Planurile plătite încep de la 50 GB și ajung până la 12 TB. Pentru aplicațiile cu schimb intensiv de fișiere, este critic să se țină cont de aceste limite.
Optimizarea stocării: iOS oferă un mecanism de eliberare a fișierelor (eviction) — când spațiul local se termină, sistemul poate șterge copiile cache ale fișierelor iCloud Drive, lăsând doar metadatele. La încercarea de a deschide un astfel de fișier, sistemul îl descarcă automat din cloud. Dezvoltatorul poate controla acest proces prin NSFileCoordinator și poate verifica starea fișierului prin NSMetadataUbiquitousItemDownloadingStatusKey.
Potrivit WWDC 2022, Apple recomandă următoarele practici pentru optimizarea iCloud Drive: stocați în Ubiquity container doar documentele utilizatorului, nu cache-ul aplicației; utilizați descărcarea asincronă cu indicator de progres; oferiți utilizatorului informații despre dimensiunea fișierelor înainte de descărcare; implementați suportul pentru reluare pentru fișierele mari.
Nuanță cheie: ștergerea unui fișier din Ubiquity container duce la ștergerea acestuia de pe toate dispozitivele utilizatorului. Pentru fișiere temporare, utilizați directorul local Documents, nu Ubiquity container. De asemenea, rețineți că sincronizarea nu este instantanee — întârzierea poate varia de la câteva secunde la minute în funcție de dimensiunea fișierului și rețea.
Întrebări frecvente
iCloud Drive este o stocare de fișiere în cloud Apple, care sincronizează documente între iPhone, iPad, Mac și PC. Este integrat în Finder și aplicația Fișiere, permițând lucrul cu documente fără aplicații suplimentare.
Sincronizarea funcționează prin CloudKit: fișierele din Ubiquity container al aplicației sunt încărcate automat în cloud și distribuite pe celelalte dispozitive ale utilizatorului. Sistemul utilizează NSMetadataQuery pentru urmărirea stării și NSFileCoordinator pentru acces sigur.
Adăugați capability iCloud în Xcode, activați serviciul iCloud Documents și utilizați FileManager.url(forUbiquityContainer:) pentru a obține calea către directorul sincronizat. Pentru selectarea fișierelor, utilizați NSDocumentPickerViewController.
iOS creează versiuni conflictuale prin NSFileVersion. Dezvoltatorul poate îmbina automat modificările sau poate afișa utilizatorului alegerea. Sistemul stochează versiunile până la 30 de zile și marchează automat conflictele la modificări simultane de pe diferite dispozitive.
Gratuit se oferă 5 GB pentru toate serviciile iCloud. Planurile plătite: 50 GB, 200 GB, 2 TB, 6 TB și 12 TB. Pentru fișiere mari, implementați suportul pentru reluare și verificați spațiul disponibil înainte de scriere.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și