iCloud Drive — bu iOS, macOS va iPadOS-ga o‘rnatilgan Apple bulutli fayl saqlashi bo‘lib, foydalanuvchi qurilmalari o‘rtasida hujjatlarni sinxronizatsiya qilish uchun xizmat qiladi. Apple, 2024 ma’lumotlariga ko‘ra, iCloud Drive fayllarni saqlash va avtomatik sinxronizatsiya qilish uchun CloudKit-dan backend sifatida foydalanadi: iPhone-da qilingan o‘zgarishlar foydalanuvchi hech qanday harakat qilmasdan darhol Mac va iPad-da aks etadi. Dasturchilar NSDocumentPickerViewController va Ubiquity API orqali iCloud Drive-ni ilovalarga integratsiya qilishlari mumkin.
Asosiy
iCloud Drive — bu bir xil Apple ID ostida avtorizatsiya qilingan foydalanuvchining barcha qurilmalari uchun yagona hujjat saqlashni ta’minlovchi Apple bulutli fayl xizmatidir. Xizmat 2014-yilda iOS 8 va OS X Yosemite bilan birga iCloud Documents o‘rniga ishga tushirilgan.
iCloud Drive boshqa bulutli saqlashlardan (Google Drive, Dropbox) operatsion tizim bilan chuqur integratsiyasi bilan farqlanadi: fayllar macOS-da to‘g‘ridan-to‘g‘ri Finder-da va iOS-da Fayllar ilovasida qo‘shimcha ilova o‘rnatmasdan ko‘rsatiladi. Tizim Wi-Fi va uyali tarmoq o‘rtasida o‘tib, tarkibni fonda avtomatik sinxronizatsiya qiladi.
Apple Platform Overview, 2024 ma’lumotlariga ko‘ra, iCloud Drive 30 kungacha fayl versiyalarini, iCloud Sharing orqali papkalarni ulashishni va Spotlight tizim qidiruvi bilan integratsiyani qo‘llab-quvvatlaydi. Dasturchilar NSFileCoordinator API va Ubiquity containers orqali saqlashga kirishadi.
Ubiquity — ma’lumotlarning “hamma joyda mavjud” bo‘lish qobiliyatini bildiruvchi Apple atamasi (ing. ubiquitous). iCloud Drive kontekstida bu CloudKit bulutli backend orqali fayllarning foydalanuvchining barcha qurilmalari o‘rtasida avtomatik sinxronizatsiyasini ta’minlovchi mexanizmdir.
| Komponent | Tavsif | Roli |
|---|---|---|
| Ubiquity container | Ilovaning maxsus katalogi | Sinxronizatsiya uchun fayllarni saqlaydi |
| CloudKit | Apple backend xizmati | Saqlash va sinxronizatsiyani ta’minlaydi |
| NSMetadataQuery | Tizim so‘rovi | Ubiquity fayllari holatini kuzatadi |
| NSFileVersion | Versiyalarni boshqarish | O‘zgarishlar to‘qnashuvlarini hal qiladi |
Ubiquity container — sinxronizatsiya uchun belgilangan ilova Sandbox ichidagi katalogdir. Ushbu katalogga joylashtirilgan fayllar avtomatik ravishda iCloud Drive-ga yuklanadi va boshqa qurilmalarga tarqatiladi. Konteynerga kirish Xcode-da Capabilities orqali sozlanadi.
Tizim har bir faylning holatini NSMetadataQuery orqali kuzatadi: fayl mahalliy (qurilmaga yuklangan), masofaviy (faqat bulutda) yoki yuklanayotgan bo‘lishi mumkin. Dasturchi dasturiy ravishda faylni yuklashni so‘rashi yoki ochishdan oldin uning mavjudligini tekshirishi mumkin.
Integratsiya iCloud Drive-ni Xcode-da iCloud capability qo‘shish va iCloud Documents xizmatini yoqish bilan boshlanadi. Shundan so‘ng ilova Ubiquity container — FileManager tomonidan qaytariladigan maxsus katalogga kirish huquqini oladi.
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 iCloud Drive-dan fayllarni tanlash va import qilish uchun tizim UI-ni ta’minlaydi. Foydalanuvchi qidiruv, saralash va ko‘p tanlov bilan standart fayl brauzerini ko‘radi. Faylni tanlagandan so‘ng, ilova uning URL-ni oladi va NSFileCoordinator orqali u bilan ishlashi mumkin.
Muhim qoida: iCloud Drive fayllari bilan ishlashda o‘qish va yozish uchun NSFileCoordinator-dan foydalanish kerak. Bu operatsiya vaqtida fayl boshqa jarayon (masalan, sinxronizatsiya) tomonidan o‘zgartirilmasligini kafolatlaydi. Muvofiqlashtirishga e’tibor bermaslik ma’lumotlarning buzilishiga olib kelishi mumkin.
Versiya to‘qnashuvlari fayl sinxronizatsiya tugashidan oldin ikki qurilmada bir vaqtning o‘zida o‘zgartirilganda yuzaga keladi. iOS NSFileVersion orqali bunday vaziyatlarni avtomatik aniqlaydi va foydalanuvchi yoki ilova hal qilishi kerak bo‘lgan to‘qnashuvchi versiyalarni yaratadi.
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 fayl o‘zgarishlar tarixini 30 kungacha saqlaydi. Har bir versiya URL, yaratilgan sana va versiyani yaratgan qurilma identifikatorini o‘z ichiga oladi. Ikki qurilma bir xil asosiy identifikator bilan o‘zgarishlar yuborganda, tizim avtomatik ravishda versiyalarni to‘qnashuvchi deb belgilaydi.
Hal qilish strategiyalari: ilova qo‘llab-quvvatlanadigan formatlar uchun o‘zgarishlarni avtomatik birlashtirishi, foydalanuvchiga versiya tanlashni ko‘rsatishi yoki “oxirgi yozuvchi” (last-writer-wins) strategiyasidan foydalanishi mumkin. Apple matnli va tuzilgan ma’lumotlar uchun avtomatik birlashtirishni, ikkilik formatlar uchun esa foydalanuvchiga to‘qnashuvchi versiyalarni ko‘rsatishni tavsiya qiladi.
Bepul saqlash iCloud 5 GB ni tashkil qiladi va foydalanuvchining barcha xizmatlari o‘rtasida taqsimlanadi: zaxira nusxalar, fotosuratlar, pochta va iCloud Drive. Pulli tariflar 50 GB dan boshlanadi va 12 TB gacha yetadi. Fayl almashinuvi intensiv bo‘lgan ilovalar uchun ushbu chegaralarni hisobga olish muhimdir.
Saqlashni optimallashtirish: iOS fayllarni bo‘shatish (eviction) mexanizmini ta’minlaydi — mahalliy joy tugaganda, tizim faqat metama’lumotlarni qoldirib, iCloud Drive fayllarining keshlangan nusxalarini o‘chirishi mumkin. Bunday faylni ochishga urinishda tizim uni avtomatik ravishda bulutdan yuklaydi. Dasturchi bu jarayonni NSFileCoordinator orqali boshqarishi va fayl holatini NSMetadataUbiquitousItemDownloadingStatusKey orqali tekshirishi mumkin.
WWDC 2022 ma’lumotlariga ko‘ra, Apple iCloud Drive-ni optimallashtirish uchun quyidagi amaliyotlarni tavsiya qiladi: Ubiquity container-da faqat foydalanuvchi hujjatlarini saqlash, ilova keshini emas; ko‘rsatkich bilan asinxron yuklashdan foydalanish; foydalanuvchiga yuklashdan oldin fayl hajmi haqida ma’lumot berish; katta fayllar uchun davom ettirishni qo‘llab-quvvatlashni amalga oshirish.
Asosiy nuance: Ubiquity container-dan faylni o‘chirish uning foydalanuvchining barcha qurilmalaridan o‘chirilishiga olib keladi. Vaqtinchalik fayllar uchun Ubiquity container emas, balki mahalliy Documents katalogidan foydalaning. Shuningdek, sinxronizatsiya bir zumda emasligini yodda tuting — kechikish fayl hajmi va tarmoqqa qarab bir necha soniyadan daqiqagacha o‘zgarishi mumkin.
Tez-tez beriladigan savollar
iCloud Drive — bu iPhone, iPad, Mac va PC o‘rtasida hujjatlarni sinxronizatsiya qiluvchi Apple bulutli fayl saqlashidir. U Finder va Fayllar ilovasi bilan integratsiyalangan bo‘lib, qo‘shimcha ilovalarsiz hujjatlar bilan ishlash imkonini beradi.
Sinxronizatsiya CloudKit orqali ishlaydi: ilovaning Ubiquity container-idagi fayllar avtomatik ravishda bulutga yuklanadi va foydalanuvchining boshqa qurilmalariga tarqatiladi. Tizim holatni kuzatish uchun NSMetadataQuery va xavfsiz kirish uchun NSFileCoordinator-dan foydalanadi.
Xcode-da iCloud capability qo‘shing, iCloud Documents xizmatini yoqing va sinxronlashtiriladigan katalog yo‘lini olish uchun FileManager.url(forUbiquityContainer:) dan foydalaning. Fayllarni tanlash uchun NSDocumentPickerViewController-dan foydalaning.
iOS NSFileVersion orqali to‘qnashuvchi versiyalar yaratadi. Dasturchi o‘zgarishlarni avtomatik birlashtirishi yoki foydalanuvchiga tanlashni ko‘rsatishi mumkin. Tizim versiyalarni 30 kun saqlaydi va turli qurilmalardan bir vaqtda o‘zgarishlar bo‘lganda to‘qnashuvlarni avtomatik belgilaydi.
Bepul 5 GB barcha iCloud xizmatlari uchun taqdim etiladi. Pulli tariflar: 50 GB, 200 GB, 2 TB, 6 TB va 12 TB. Katta fayllar uchun davom ettirishni qo‘llab-quvvatlashni amalga oshiring va yozishdan oldin mavjud joyni tekshiring.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.