iCloud Drive — bu, iOS, macOS və iPadOS-ə qurulmuş Apple bulud fayl anbarıdır və istifadəçinin cihazları arasında sənədləri sinxronizasiya edir. Apple, 2024 məlumatlarına görə, iCloud Drive faylların saxlanması və avtomatik sinxronizasiyası üçün CloudKit-dən backend kimi istifadə edir: iPhone-da edilən dəyişikliklər istifadəçinin heç bir hərəkəti olmadan dərhal Mac və iPad-də əks olunur. Tərtibatçılar NSDocumentPickerViewController və Ubiquity API vasitəsilə iCloud Drive-ı tətbiqlərə inteqrasiya edə bilərlər.
Başlıca
iCloud Drive — bu, eyni Apple ID altında qeydiyyatdan keçmiş istifadəçinin bütün cihazları üçün vahid sənəd anbarı təmin edən Apple bulud fayl xidmətidir. Xidmət 2014-cü ildə iOS 8 və OS X Yosemite ilə birlikdə iCloud Documents-ın əvəzi kimi işə salınıb.
iCloud Drive digər bulud anbarlarından (Google Drive, Dropbox) əməliyyat sistemi ilə dərin inteqrasiyası ilə fərqlənir: fayllar macOS-da birbaşa Finder-də və iOS-da Fayllar tətbiqində əlavə tətbiq quraşdırmadan göstərilir. Sistem Wi-Fi və mobil řəbəkə arasında keçid edərək məzmunu avtomatik olaraq fonda sinxronizasiya edir.
Apple Platform Overview, 2024 məlumatlarına görə, iCloud Drive 30 günə qədər fayl versiyalarını, iCloud Sharing vasitəsilə qovluqların paylaşılmasını və Spotlight sistem axtarışı ilə inteqrasiyanı dəstəkləyir. Tərtibatçılar NSFileCoordinator API və Ubiquity containers vasitəsilə anbara çıxış əldə edirlər.
Ubiquity — məlumatların “hər yerdə olma” qabiliyyətini bildirən Apple termini (ing. ubiquitous). iCloud Drive kontekstində bu, CloudKit bulud backend-i vasitəsilə faylların istifadəçinin bütün cihazları arasında avtomatik sinxronizasiyasını təmin edən mexanizmdir.
| Komponent | Təsvir | Rolu |
|---|---|---|
| Ubiquity container | Tətbiqin xüsusi qovluğu | Sinxronizasiya üçün faylları saxlayır |
| CloudKit | Apple backend xidməti | Saxlama və sinxronizasiyanı təmin edir |
| NSMetadataQuery | Sistem sorğusu | Ubiquity fayllarının vəziyyətini izləyir |
| NSFileVersion | Versiya idarəetməsi | Dəyişiklik konfliktlərini həll edir |
Ubiquity container — bu, sinxronizasiya üçün qeyd edilmiş tətbiq Sandbox-daxilidir. Bu qovluğa yerləşdirilən fayllar avtomatik olaraq iCloud Drive-a yüklənir və digər cihazlara yayılır. Konteynerə giriş Xcode-da Capabilities vasitəsilə konfiqurasiya edilir.
Sistem hər bir faylın statusunu NSMetadataQuery vasitəsilə izləyir: fayl lokal (cihaza yüklənmiş), uzaq (yalnız buludda) və ya yüklənən ola bilər. Tərtibatçı proqram vasitəsilə faylın yüklənməsini tələb edə və ya açmazdan əvvəl onun əlçatanlığını yoxlaya bilər.
iCloud Drive inteqrasiyası Xcode-da iCloud capability əlavə etmək və iCloud Documents xidmətini aktivləşdirməklə başlayır. Bundan sonra tətbiq Ubiquity container-ə — FileManager tərəfindən qaytarılan xüsusi qovluğa çıxış əldə edir.
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 faylları seçmək və idxal etmək üçün sistem UI təmin edir. İstifadəçi axtarış, çeşid və çoxsaylı seçim dəstəyi ilə standart fayl brauzerini görür. Faylı seçdikdən sonra tətbiq onun URL-ni alır və NSFileCoordinator vasitəsilə onunla işləyə bilər.
Önəmli qayda: iCloud Drive faylları ilə işləyərkən oxuma və yazma üçün NSFileCoordinator-dan istifadə etmək lazımdır. Bu, əməliyyat zamanı faylın başqa bir proses (məsələn, sinxronizasiya) tərəfindən dəyişdirilməyəcəyini təmin edir. Koordinasiyaya laqeyd yanaşmaq məlumatların zədələnməsinə səbəb ola bilər.
Versiya konfliktləri fayl sinxronizasiya tamamlanmazdan əvvəl iki cihazda eyni vaxtda dəyişdirildikdə yaranır. iOS NSFileVersion vasitəsilə belə halları avtomatik aşkar edir və istifadəçi və ya tətbiq tərəfindən həll edilməli olan konflikt edən versiyalar yaradır.
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 dəyişiklik tarixini 30 günə qədər saxlayır. Hər versiyada URL, yaradılma tarixi və versiyanı yaradan cihazın identifikatoru var. İki cihaz eyni əsas identifikatorla dəyişikliklər göndərdikdə sistem avtomatik olaraq versiyaları konflikt edən kimi qeyd edir.
Həll strategiyaları: tətbiq dəstəklənən formatlar üçün dəyişiklikləri avtomatik birləşdirə, istifadəçiyə versiya seçimini göstərə və ya “son yazan” (last-writer-wins) strategiyasını tətbiq edə bilər. Apple mətn və strukturlaşdırılmış məlumatlar üçün avtomatik birləşdirmə, ikili formatlar üçün isə istifadəçiyə konflikt edən versiyaları göstərməyi tövsiyə edir.
Pulsuz yaddaş iCloud 5 GB təşkil edir və istifadəçinin bütün xidmətləri arasında bölüşdürülür: ehtiyat kopyalar, fotoşəkillər, poçt və iCloud Drive. Ödənişli tariflər 50 GB-dan başlayır və 12 TB-a qədər çatır. Fayl mübadiləsi intensiv olan tətbiqlər üçün bu limitləri nəzərə almaq kritikdir.
Yaddaş optimallaşdırması: iOS faylların boşaldılması (eviction) mexanizmini təmin edir — lokal yer bitdikdə sistem yalnız metadata buraxaraq iCloud Drive fayllarının keşlənmiş surətlərini silə bilər. Belə bir faylı açmağa cəhd etdikdə sistem onu avtomatik olaraq buluddan yükləyir. Tərtibatçı bu prosesi NSFileCoordinator vasitəsilə idarə edə və faylın statusunu NSMetadataUbiquitousItemDownloadingStatusKey vasitəsilə yoxlaya bilər.
WWDC 2022 məlumatlarına görə, Apple iCloud Drive optimallaşdırması üçün aşağıdakı təcrübələri tövsiyə edir: Ubiquity container-də yalnız istifadəçi sənədlərini saxlamaq, tətbiq keşini yox; göstəricisi ilə asinxron yükləmə istifadə etmək; istifadəçiyə yükləmədən əvvəl fayl ölçüsü haqqında məlumat vermək; böyük fayllar üçün davam etdirmə dəstəyini tətbiq etmək.
Əsas nüans: Ubiquity container-dən faylı silmək onun istifadəçinin bütün cihazlarından silinməsinə səbəb olur. Müvəqqəti fayllar üçün Ubiquity container yox, lokal Documents qovluğundan istifadə edin. Həmçinin nəzərə alın ki, sinxronizasiya ani deyil — gecikmə faylın ölçüsündən və řəbəkədən asılı olaraq bir neçə saniyədən dəqiqəyə qədər dəyişə bilər.
Tez-tez verilən suallar
iCloud Drive — bu, iPhone, iPad, Mac və PC arasında sənədləri sinxronizasiya edən Apple bulud fayl anbarıdır. O, Finder və Fayllar tətbiqi ilə inteqrasiya edilmişdir və əlavə tətbiqlər olmadan sənədlərlə işləməyə imkan verir.
Sinxronizasiya CloudKit vasitəsilə işləyir: tətbiqin Ubiquity container-dən fayllar avtomatik olaraq buluda yüklənir və istifadəçinin digər cihazlarına yayılır. Sistem statusu izləmək üçün NSMetadataQuery və təhlükəsiz giriş üçün NSFileCoordinator istifadə edir.
Xcode-da iCloud capability əlavə edin, iCloud Documents xidmətini aktivləşdirin və sinxronizasiya qovluğuna yol əldə etmək üçün FileManager.url(forUbiquityContainer:) istifadə edin. Faylları seçmək üçün NSDocumentPickerViewController-dan istifadə edin.
iOS NSFileVersion vasitəsilə konflikt edən versiyalar yaradır. Tərtibatçı dəyişiklikləri avtomatik birləşdirə və ya istifadəçiyə seçim göstərə bilər. Sistem versiyaları 30 gün saxlayır və müxtəlif cihazlardan eyni vaxtda dəyişikliklər olduqda konfliktləri avtomatik qeyd edir.
Pulsuz 5 GB bütün iCloud xidmətləri üçün təqdim olunur. Ödənişli tariflər: 50 GB, 200 GB, 2 TB, 6 TB və 12 TB. Böyük fayllar üçün davam etdirmə dəstəyini tətbiq edin və yazmazdan əvvəl mövcud yeri yoxlayın.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun