iCloud Drive adalah penyimpanan file cloud Apple yang tertanam di iOS, macOS, dan iPadOS untuk sinkronisasi dokumen antar perangkat pengguna. Menurut data Apple, 2024, iCloud Drive menggunakan CloudKit sebagai backend untuk penyimpanan file dan sinkronisasi otomatis: perubahan yang dilakukan di iPhone langsung tercermin di Mac dan iPad tanpa tindakan dari pengguna. Pengembang dapat mengintegrasikan iCloud Drive ke aplikasi melalui NSDocumentPickerViewController dan API Ubiquity.
Utama
iCloud Drive adalah layanan file cloud Apple yang menyediakan penyimpanan dokumen terpadu untuk semua perangkat pengguna yang terotorisasi dengan Apple ID yang sama. Layanan ini diluncurkan pada tahun 2014 bersama iOS 8 dan OS X Yosemite sebagai pengganti iCloud Documents.
iCloud Drive berbeda dari penyimpanan cloud lainnya (Google Drive, Dropbox) dengan integrasi mendalam ke sistem operasi: file ditampilkan langsung di Finder di macOS dan di aplikasi Files di iOS, tanpa perlu menginstal aplikasi tambahan. Sistem secara otomatis menyinkronkan konten di latar belakang, beralih antara Wi-Fi dan jaringan seluler.
Menurut Apple Platform Overview, 2024, iCloud Drive mendukung versioning file hingga 30 hari, berbagi folder melalui iCloud Sharing, dan integrasi dengan pencarian sistem Spotlight. Pengembang mendapatkan akses ke penyimpanan melalui API NSFileCoordinator dan Ubiquity containers.
Ubiquity — istilah Apple yang menunjukkan kemampuan data untuk “berada di mana-mana” (dari bahasa Inggris ubiquitous). Dalam konteks iCloud Drive, ini adalah mekanisme yang memungkinkan file untuk secara otomatis disinkronkan di semua perangkat pengguna melalui backend cloud CloudKit.
| Komponen | Deskripsi | Peran |
|---|---|---|
| Ubiquity container | Direktori khusus aplikasi | Menyimpan file untuk sinkronisasi |
| CloudKit | Layanan backend Apple | Menyediakan penyimpanan dan sinkronisasi |
| NSMetadataQuery | Kueri sistem | Melacak status file Ubiquity |
| NSFileVersion | Manajemen versi | Menyelesaikan konflik perubahan |
Ubiquity container adalah direktori di dalam Sandbox aplikasi yang ditandai untuk sinkronisasi. File yang ditempatkan di direktori ini secara otomatis diunggah ke iCloud Drive dan didistribusikan ke perangkat lain. Akses ke kontainer dikonfigurasi melalui Capabilities di Xcode.
Sistem melacak status setiap file melalui NSMetadataQuery: file bisa lokal (diunduh ke perangkat), jarak jauh (hanya di cloud), atau sedang diunduh. Pengembang dapat secara terprogram meminta pengunduhan file atau memeriksa ketersediaannya sebelum dibuka.
Integrasi iCloud Drive dimulai dengan menambahkan capability iCloud di Xcode dan mengaktifkan layanan iCloud Documents. Setelah itu, aplikasi mendapatkan akses ke Ubiquity container — direktori khusus yang jalurnya dikembalikan melalui 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 menyediakan UI sistem untuk memilih dan mengimpor file dari iCloud Drive. Pengguna melihat browser file standar dengan dukungan pencarian, pengurutan, dan pilihan ganda. Setelah memilih file, aplikasi menerima URL-nya dan dapat bekerja dengannya melalui NSFileCoordinator.
Aturan penting: saat bekerja dengan file iCloud Drive, NSFileCoordinator harus digunakan untuk membaca dan menulis. Ini memastikan bahwa file tidak akan diubah oleh proses lain (misalnya sinkronisasi) selama operasi. Mengabaikan koordinasi dapat menyebabkan kerusakan data.
Konflik versi terjadi ketika file diubah pada dua perangkat secara bersamaan sebelum sinkronisasi selesai. iOS secara otomatis mendeteksi situasi seperti itu melalui NSFileVersion dan membuat versi yang bertentangan yang harus diselesaikan oleh pengguna atau aplikasi.
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 menyimpan riwayat perubahan file hingga 30 hari. Setiap versi berisi URL, tanggal pembuatan, dan identifikasi perangkat yang membuat versi tersebut. Sistem secara otomatis menandai versi sebagai bertentangan ketika dua perangkat mengirim perubahan dengan identifikasi dasar yang sama.
Strategi penyelesaian: aplikasi dapat secara otomatis menggabungkan perubahan (untuk format yang didukung), menampilkan pilihan versi kepada pengguna, atau menggunakan strategi “penulis terakhir” (last-writer-wins). Apple merekomendasikan untuk data tekstual dan terstruktur menggunakan penggabungan otomatis, dan untuk format biner — menampilkan versi yang bertentangan kepada pengguna.
Penyimpanan gratis iCloud adalah 5 GB, didistribusikan di antara semua layanan pengguna: cadangan, foto, email, dan iCloud Drive. Paket berbayar mulai dari 50 GB hingga 12 TB. Untuk aplikasi dengan pertukaran file yang intensif, sangat penting untuk mempertimbangkan batasan ini.
Optimasi penyimpanan: iOS menyediakan mekanisme pengeluaran file (eviction) — ketika ruang lokal habis, sistem dapat menghapus salinan cache file iCloud Drive, hanya menyisakan metadata. Saat mencoba membuka file seperti itu, sistem secara otomatis mengunduhnya dari cloud. Pengembang dapat mengontrol proses ini melalui NSFileCoordinator dan memeriksa status file melalui NSMetadataUbiquitousItemDownloadingStatusKey.
Menurut WWDC 2022, Apple merekomendasikan praktik berikut untuk optimasi iCloud Drive: simpan di Ubiquity container hanya dokumen pengguna, bukan cache aplikasi; gunakan pengunduhan asinkron dengan indikator kemajuan; berikan informasi kepada pengguna tentang ukuran file sebelum pengunduhan; terapkan dukungan pelanjutan untuk file besar.
Nuansa kunci: menghapus file dari Ubiquity container menyebabkan penghapusannya dari semua perangkat pengguna. Untuk file sementara, gunakan direktori Documents lokal, bukan Ubiquity container. Juga perlu diingat bahwa sinkronisasi tidak instan — penundaan dapat berkisar dari beberapa detik hingga menit tergantung pada ukuran file dan jaringan.
Pertanyaan yang Sering Diajukan
iCloud Drive adalah penyimpanan file cloud Apple yang menyinkronkan dokumen antara iPhone, iPad, Mac, dan PC. Ini terintegrasi dengan Finder dan aplikasi Files, memungkinkan bekerja dengan dokumen tanpa aplikasi tambahan.
Sinkronisasi bekerja melalui CloudKit: file dari Ubiquity container aplikasi secara otomatis diunggah ke cloud dan didistribusikan ke perangkat lain pengguna. Sistem menggunakan NSMetadataQuery untuk melacak status dan NSFileCoordinator untuk akses aman.
Tambahkan capability iCloud di Xcode, aktifkan layanan iCloud Documents, dan gunakan FileManager.url(forUbiquityContainer:) untuk mendapatkan jalur ke direktori yang disinkronkan. Untuk memilih file, gunakan NSDocumentPickerViewController.
iOS membuat versi yang bertentangan melalui NSFileVersion. Pengembang dapat secara otomatis menggabungkan perubahan atau menampilkan pilihan kepada pengguna. Sistem menyimpan versi hingga 30 hari dan secara otomatis menandai konflik saat perubahan bersamaan dari perangkat yang berbeda.
Gratis disediakan 5 GB untuk semua layanan iCloud. Paket berbayar: 50 GB, 200 GB, 2 TB, 6 TB, dan 12 TB. Untuk file besar, terapkan dukungan pelanjutan dan periksa ruang yang tersedia sebelum menulis.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga