Как работает iCloud
![](SITEIMAGES/4916.jpg)
iCloud — это новый облачный сервис Apple, который сохраняет ваш контент и удалённо загружает его на все ваши устройства. Да, но как работает iCloud? Чем он так удобен для пользователей и разработчиков? Давайте разбираться.
На iOS-устройствах под контент iCloud отведена особая папка: /private/var/mobile/Library/Mobile Documents/. В этой папке хранятся все материалы, которыми приложения могут обмениваться с облаком. Права самих приложений по чтению из папки и записи в неё строго ограничены. Причём ограничение зависит не от приложения, а от студии-разработчика. Иными словами, Pages может обмениваться данными с iBooks, поскольку обе программы разработаны в Apple. Но вот QuickOffice от одноимённой студии доступа к их файлам иметь не будет.
Прелесть iCloud в том, что синхронизацией с облаком занимаются не приложения, а локальный сервис iOS. Система мониторит изменения в папке, и когда файлы меняются, автоматически отправляет их в облако. А из облака их, в свою очередь, достают аналогичные сервисы на других устройствах вашего Apple ID. Приложение не участвует вовсе! Для него есть другой механизм — специальная подписка, реализованная с помощью ряда классов и оповещений. В результате программа узнаёт об обновлении своих файлов и по запросу от пользователя может к ним обратиться.
Возникает вопрос — как iCloud справляется с конфликтами нескольких устройств? Простой пример: вы меняете исходный документ Pages сразу на iPhone и на iPad. Какую из версий считать правильной? Решение подобных конфликтов полностью ложится на плечи разработчиков. Как вариант, считать правильной более свежую версию документа. Или стараться комбинировать изменения с нескольких устройств. Как раз в этом заключается основная проблема, над которой создатели приложений трудятся месяцами. Выбирая пути комбинирования изменений, они могут пользоваться самой разной информацией — геолокационными данными, временем, типом соединения (3G/Wi-Fi) и т.п.
Но в основе всего этого лежит одна-единственная папка, которую iOS 5 синхронизирует с облаком.