iCloud Drive је Аппле-ово складиште датотека у облаку, уграђено у иОС, мацОС и иПадОС за синхронизацију докумената између уређаја корисника. Према подацима Аппле, 2024, iCloud Drive користи ЦлоудКит као позадински сервис за чување датотека и аутоматску синхронизацију: промене направљене на иПхоне-у тренутно се одражавају на Мац-у и иПад-у без радњи корисника. Програмери могу да интегришу iCloud Drive у апликације преко НСДоцументПицкерВиевЦонтроллер-а и Убиqуитy АПИ-ја.
Главно
iCloud Drive је Аппле-ов сервис датотека у облаку који пружа јединствено складиште докумената за све уређаје корисника ауторизоване под истим Аппле ИД-ом. Сервис је покренут 2014. године заједно са иОС 8 и ОС X Yosemite као замена за иЦлоуд Доцументс.
iCloud Drive се разликује од других складишта у облаку (Гоогле Дриве, Дропбок) дубоком интеграцијом са оперативним системом: датотеке се приказују директно у Финдер-у на мацОС-у и у апликацији Датотеке на иОС-у, без потребе за инсталацијом додатне апликације. Систем аутоматски синхронизује садржај у позадини, пребацујући се између Ви-Фи и мобилне мреже.
Према подацима Аппле Платформ Овервиев, 2024, iCloud Drive подржава верзионисање датотека до 30 дана, дељење фасцикли кроз иЦлоуд Схаринг и интеграцију са системском претрагом Спотлигхт. Програмери добијају приступ складишту кроз АПИ НСФилеЦоординатор и Убиqуитy цонтаинерс.
Убиqуитy — Аппле-ов термин који означава способност података да „буду свуда” (од енгл. ubiquitous). У контексту iCloud Drive-а, ово је механизам који омогућава датотекама да се аутоматски синхронизују између свих уређаја корисника преко облачног позадинског сервиса ЦлоудКит.
| Компонента | Опис | Улога |
|---|---|---|
| Убиqуитy цонтаинер | Посебан директоријум апликације | Чува датотеке за синхронизацију |
| ЦлоудКит | Аппле-ов позадински сервис | Обезбеђује складиштење и синхронизацију |
| НСМетадатаQуерy | Системски упит | Прати стање Убиqуитy датотека |
| НСФилеВерсион | Управљање верзијама | Решава конфликте измена |
Убиqуитy цонтаинер је директоријум унутар Сандбок-а апликације означен за синхронизацију. Датотеке постављене у овај директоријум се аутоматски отпремају у iCloud Drive и дистрибуирају на друге уређаје. Приступ контејнеру се конфигурише кроз Цапабилитиес у Xcode-у.
Систем прати статус сваке датотеке кроз НСМетадатаQуерy: датотека може бити локална (преузета на уређај), удаљена (само у облаку) или се преузима. Програмер може програмски захтевати преузимање датотеке или проверити њену доступност пре отварања.
Интеграција iCloud Drive-а почиње додавањем цапабилитy иЦлоуд у Xcode-у и укључивањем сервиса иЦлоуд Доцументс. Након тога, апликација добија приступ Убиqуитy цонтаинер-у — посебном директоријуму чију путању враћа ФилеМанагер.
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()
}
}
НСДоцументПицкерВиевЦонтроллер пружа системски UI за избор и увоз датотека из iCloud Drive-а. Корисник види стандардни прегледач датотека са подршком за претрагу, сортирање и вишеструки избор. Након избора датотеке, апликација добија њен УРЛ и може радити са њим кроз НСФилеЦоординатор.
Важно правило: при раду са iCloud Drive датотекама неопходно је користити НСФилеЦоординатор за читање и писање. Ово гарантује да датотека неће бити измењена од стране другог процеса (нпр. синхронизације) током операције. Занемаривање координације може довести до оштећења података.
Конфликти верзија настају када се датотека мења на два уређаја истовремено пре завршетка синхронизације. иОС аутоматски открива такве ситуације кроз НСФилеВерсион и ствара конфликтне верзије које корисник или апликација морају да реше.
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)"
)
}
}
}
НСФилеВерсион чува историју измена датотеке до 30 дана. Свака верзија садржи УРЛ, датум креирања и идентификатор уређаја који је креирао верзију. Систем аутоматски означава верзије као конфликтне када два уређаја шаљу измене са истим основним идентификатором.
Стратегије решавања: апликација може аутоматски спајати измене (за подржане формате), приказивати кориснику избор верзије или користити стратегију „последњи писац” (ласт-вритер-винс). Аппле препоручује за текстуалне и структуриране податке аутоматско спајање, а за бинарне формате — приказивање конфликтних верзија кориснику.
Бесплатно складиште иЦлоуд-а износи 5 ГБ, распоређених између свих сервиса корисника: резервне копије, фотографије, пошта и iCloud Drive. Платни планови почињу од 50 ГБ и достижу до 12 ТБ. За апликације са интензивном разменом датотека критично је узети у обзир ова ограничења.
Оптимизација складиштења: иОС пружа механизам ослобађања датотека (евицтион) — када понестане локалног простора, систем може уклонити кеширане копије iCloud Drive датотека, остављајући само метаподатке. При покушају отварања такве датотеке, систем је аутоматски преузима из облака. Програмер може контролисати овај процес кроз НСФилеЦоординатор и проверавати статус датотеке кроз НСМетадатаУбиqуитyИтемДовнлоадингСтатусКеy.
Према подацима WWDC 2022, Аппле препоручује следеће праксе за оптимизацију iCloud Drive-а: чувати у Убиqуитy цонтаинер-у само корисничке документе, а не кеш апликације; користити асинхроно преузимање са индикатором напретка; пружити кориснику информацију о величини датотека пре преузимања; имплементирати подршку за наставак за велике датотеке.
Кључна нијанса: уклањање датотеке из Убиqуитy цонтаинер-а доводи до њеног уклањања са свих уређаја корисника. За привремене датотеке користите локални директоријум Доцументс, а не Убиqуитy цонтаинер. Такође узмите у обзир да синхронизација није тренутна — кашњење може износити од неколико секунди до минута у зависности од величине датотеке и мреже.
Често постављана питања
iCloud Drive је Аппле-ово складиште датотека у облаку које синхронизује документе између иПхоне-а, иПад-а, Мац-а и ПЦ-а. Интегрисан је у Финдер и апликацију Датотеке, омогућавајући рад са документима без додатних апликација.
Синхронизација ради кроз ЦлоудКит: датотеке из Убиqуитy цонтаинер-а апликације се аутоматски отпремају у облак и дистрибуирају на друге уређаје корисника. Систем користи НСМетадатаQуерy за праћење статуса и НСФилеЦоординатор за безбедан приступ.
Додајте цапабилитy иЦлоуд у Xcode-у, укључите сервис иЦлоуд Доцументс и користите ФилеМанагер.урл(форУбиqуитyЦонтаинер:) за добијање путање до синхронизованог директоријума. За избор датотека користите НСДоцументПицкерВиевЦонтроллер.
иОС ствара конфликтне верзије кроз НСФилеВерсион. Програмер може аутоматски спојити измене или приказати кориснику избор. Систем чува верзије до 30 дана и аутоматски означава конфликте при истовременим изменама са различитих уређаја.
Бесплатно се обезбеђује 5 ГБ за све иЦлоуд сервисе. Платни планови: 50 ГБ, 200 ГБ, 2 ТБ, 6 ТБ и 12 ТБ. За велике датотеке имплементирајте подршку за наставак и проверавајте доступан простор пре писања.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође