Ang iCloud Drive ay isang cloud file storage ng Apple na naka-embed sa iOS, macOS at iPadOS para sa pag-sync ng mga dokumento sa pagitan ng mga device ng user. Ayon sa datos ng Apple, 2024, ang iCloud Drive ay gumagamit ng CloudKit bilang backend para sa pag-iimbak ng file at awtomatikong pag-sync: ang mga pagbabagong ginawa sa iPhone ay agad na sumasalamin sa Mac at iPad nang walang aksyon ng user. Maaaring isama ng mga developer ang iCloud Drive sa mga application sa pamamagitan ng NSDocumentPickerViewController at Ubiquity API.
Mga Pangunahing
iCloud Drive ay isang serbisyo ng file sa cloud ng Apple na nagbibigay ng pinag-isang imbakan ng dokumento para sa lahat ng device ng user na awtorisado sa ilalim ng parehong Apple ID. Ang serbisyo ay inilunsad noong 2014 kasama ng iOS 8 at OS X Yosemite bilang kapalit ng iCloud Documents.
Ang iCloud Drive ay naiiba sa iba pang cloud storage (Google Drive, Dropbox) sa malalim na pagsasama sa operating system: ang mga file ay direktang lumalabas sa Finder sa macOS at sa Files application sa iOS, nang hindi kinakailangang mag-install ng karagdagang application. Awtomatikong nagsi-sync ang system ng nilalaman sa background, lumilipat sa pagitan ng Wi-Fi at cellular network.
Ayon sa Apple Platform Overview, 2024, sinusuportahan ng iCloud Drive ang pag-version ng file hanggang 30 araw, pagbabahagi ng folder sa pamamagitan ng iCloud Sharing, at pagsasama sa system search na Spotlight. Ang mga developer ay nakakakuha ng access sa imbakan sa pamamagitan ng NSFileCoordinator API at Ubiquity containers.
Ubiquity — termino ng Apple na nagpapahiwatig ng kakayahan ng data na “maging nasa lahat ng dako” (mula sa Ingles na ubiquitous). Sa konteksto ng iCloud Drive, ito ay isang mekanismo na nagpapahintulot sa mga file na awtomatikong mag-sync sa lahat ng device ng user sa pamamagitan ng cloud backend na CloudKit.
| Component | Paglalarawan | Papel |
|---|---|---|
| Ubiquity container | Espesyal na direktoryo ng application | Nag-iimbak ng mga file para sa pag-sync |
| CloudKit | Backend na serbisyo ng Apple | Nagbibigay ng imbakan at pag-sync |
| NSMetadataQuery | System query | Sinusubaybayan ang estado ng mga Ubiquity file |
| NSFileVersion | Pamamahala ng bersyon | Naglulutas ng mga salungatan sa pagbabago |
Ubiquity container ay isang direktoryo sa loob ng Sandbox ng application na may marka para sa pag-sync. Ang mga file na inilagay sa direktoryong ito ay awtomatikong naa-upload sa iCloud Drive at ipinamamahagi sa iba pang mga device. Ang access sa container ay na-configure sa pamamagitan ng Capabilities sa Xcode.
Sinusubaybayan ng system ang status ng bawat file sa pamamagitan ng NSMetadataQuery: ang file ay maaaring lokal (na-download sa device), malayo (sa cloud lamang), o dina-download. Maaaring programmatically humiling ang developer ng pag-download ng file o suriin ang pagkakaroon nito bago buksan.
Pagsasama ng iCloud Drive ay nagsisimula sa pagdaragdag ng iCloud capability sa Xcode at pag-activate ng serbisyo ng iCloud Documents. Pagkatapos nito, ang application ay nakakakuha ng access sa Ubiquity container — isang espesyal na direktoryo na ang path ay ibinabalik sa pamamagitan ng 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 ay nagbibigay ng system UI para sa pagpili at pag-import ng mga file mula sa iCloud Drive. Nakikita ng user ang isang standard file browser na may suporta para sa paghahanap, pag-uuri, at maramihang pagpili. Pagkatapos pumili ng file, natatanggap ng application ang URL nito at maaaring magtrabaho kasama nito sa pamamagitan ng NSFileCoordinator.
Mahalagang tuntunin: kapag nagtatrabaho sa mga iCloud Drive file, dapat gamitin ang NSFileCoordinator para sa pagbabasa at pagsulat. Ginagarantiyahan nito na ang file ay hindi mababago ng ibang proseso (hal. pag-sync) sa panahon ng operasyon. Ang pagpapabaya sa koordinasyon ay maaaring humantong sa pagkasira ng data.
Mga salungatan sa bersyon ay nangyayari kapag ang isang file ay binago sa dalawang device nang sabay-sabay bago matapos ang pag-sync. Awtomatikong nakikita ng iOS ang mga ganitong sitwasyon sa pamamagitan ng NSFileVersion at lumilikha ng mga nagkakasalungatang bersyon na dapat lutasin ng user o application.
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)"
)
}
}
}
Ang NSFileVersion ay nag-iimbak ng kasaysayan ng pagbabago ng file hanggang 30 araw. Ang bawat bersyon ay naglalaman ng URL, petsa ng paggawa, at identifier ng device na lumikha ng bersyon. Awtomatikong minamarkahan ng system ang mga bersyon bilang nagkakasalungatan kapag ang dalawang device ay nagpapadala ng mga pagbabago na may parehong base identifier.
Mga estratehiya sa paglutas: ang application ay maaaring awtomatikong mag-merge ng mga pagbabago (para sa mga suportadong format), magpakita sa user ng pagpili ng bersyon, o gumamit ng estratehiyang “huling manunulat” (last-writer-wins). Inirerekomenda ng Apple para sa tekstwal at structured na data ang awtomatikong pag-merge, at para sa binary format — pagpapakita ng mga nagkakasalungatang bersyon sa user.
Libreng storage ng iCloud ay 5 GB, na ipinamamahagi sa lahat ng serbisyo ng user: mga backup, larawan, email, at iCloud Drive. Ang mga bayad na plano ay nagsisimula sa 50 GB at umaabot hanggang 12 TB. Para sa mga application na may masinsinang pagpapalitan ng file, kritikal na isaalang-alang ang mga limitasyong ito.
Pag-optimize ng storage: ang iOS ay nagbibigay ng mekanismo ng pagpapalabas ng file (eviction) — kapag naubos ang lokal na espasyo, maaaring tanggalin ng system ang mga naka-cache na kopya ng iCloud Drive file, na nag-iiwan lamang ng metadata. Kapag sinubukang buksan ang naturang file, awtomatikong dina-download ito ng system mula sa cloud. Maaaring kontrolin ng developer ang prosesong ito sa pamamagitan ng NSFileCoordinator at suriin ang status ng file sa pamamagitan ng NSMetadataUbiquitousItemDownloadingStatusKey.
Ayon sa WWDC 2022, inirerekomenda ng Apple ang mga sumusunod na kasanayan para sa pag-optimize ng iCloud Drive: mag-imbak sa Ubiquity container lamang ng mga dokumento ng user, hindi ang cache ng application; gumamit ng asynchronous na pag-download na may indicator ng progreso; magbigay sa user ng impormasyon tungkol sa laki ng file bago i-download; ipatupad ang suporta sa pagpapatuloy para sa malalaking file.
Pangunahing nuance: ang pagtanggal ng file mula sa Ubiquity container ay nagiging sanhi ng pagtanggal nito mula sa lahat ng device ng user. Para sa mga pansamantalang file, gamitin ang lokal na direktoryo ng Documents, hindi ang Ubiquity container. Tandaan din na ang pag-sync ay hindi instant — ang pagkaantala ay maaaring mula sa ilang segundo hanggang minuto depende sa laki ng file at network.
Mga Madalas Itanong
iCloud Drive ay isang cloud file storage ng Apple na nagsi-sync ng mga dokumento sa pagitan ng iPhone, iPad, Mac at PC. Ito ay isinama sa Finder at Files application, na nagpapahintulot sa pagtatrabaho sa mga dokumento nang walang karagdagang application.
Pag-sync ay gumagana sa pamamagitan ng CloudKit: ang mga file mula sa Ubiquity container ng application ay awtomatikong naa-upload sa cloud at ipinamamahagi sa iba pang mga device ng user. Gumagamit ang system ng NSMetadataQuery para sa pagsubaybay ng status at NSFileCoordinator para sa ligtas na access.
Magdagdag ng iCloud capability sa Xcode, i-activate ang serbisyo ng iCloud Documents, at gamitin ang FileManager.url(forUbiquityContainer:) para makuha ang path sa naka-sync na direktoryo. Para sa pagpili ng file, gamitin ang NSDocumentPickerViewController.
Ang iOS ay lumilikha ng mga nagkakasalungatang bersyon sa pamamagitan ng NSFileVersion. Maaaring awtomatikong i-merge ng developer ang mga pagbabago o magpakita ng pagpili sa user. Ang system ay nag-iimbak ng mga bersyon hanggang 30 araw at awtomatikong minamarkahan ang mga salungatan sa sabay na pagbabago mula sa iba't ibang device.
Libre ay nagbibigay ng 5 GB para sa lahat ng serbisyo ng iCloud. Mga bayad na plano: 50 GB, 200 GB, 2 TB, 6 TB at 12 TB. Para sa malalaking file, ipatupad ang suporta sa pagpapatuloy at suriin ang available na espasyo bago magsulat.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din