Проблема iCloud

Предлагаю вашему вниманию статью Кайла Бакстера, простого разработчика под iOS, работающего над своим приложением для iPad. В своем блоге Кайл рассказывает о проблеме, с которой сталкиваются многие разработчики в процессе интеграции iCloud в свое приложение.

В течение последних двух месяцев я был занят работой над обновлением своего приложения Basil. Более всего меня интересовала возможность добавления синхронизации в приложение. Разумеется, из всех сервисов синхронизации я более всего склонялся к iCloud. Но я не мог догадаться, что процесс внедрения этого замечательного сервиса в мое приложение окажется так сложен.

Вы думали iCloud это просто?

Если верить Apple, то iCloud обещает много всего и сразу: синхронизированные между всеми вашими устройствами контакты, календари, резервные копии, музыка, документы, данные приложений автоматически попадают на все ваши устройства где бы вы ни находились. Нет необходимости думать о перемещении файлов, синхронизации с iTunes и прочей белиберде, которой мы занимались до появления iCloud. По заверению Apple, вся актуальная информация будет доставлена до вас без необходимости совершения лишних действий. Лежащая в основе этого сервиса идея — никогда не заботиться о перемещении контента — крайне близка мне и именно этого я хотел добиться в следующем обновлении своего приложения.

Но к сожалению, меня ждало разочарование. Первое, что огорчило — это ограниченная синхронизация между iOS и OS X устройствами. Возможно, это не особо ощутимая проблема для некоторых разработчиков, но если ваше приложение работает на множестве устройств от Apple и одной из его ключевых функций является синхронизация через iCloud, вы непременно сталкивались с этой проблемой. К примеру, Марко Армент, разработчик Instapaper, выбрал для синхронизации статей между устройствами iCloud. Марко необходимо добиться от его приложения одинаково хорошей работы на Mac, iPhone и iPad, чтобы его пользователи могли, добавляя различные статьи на одном устройстве, продолжать их чтение на другом. Также у его приложения есть замечательный букмарклет «Читать позже», работающий в браузере любого вашего устройства и позволяющий из браузера добавлять статьи в Instapaper, даже если на устройствах не установлено соответствующее приложение. При включении синхронизации через iCloud в приложение, пользователю для добавления любой статьи из браузера в сервис с помощью букмарклета, необходимо иметь Instapaper на своем устройстве, иначе статья просто не добавится в сервис. С аналогичной ситуацией столкнулся и я при работе над таким же букмарклетом «Добавить в Basil» в своем приложении. Теперь, когда вы касаетесь этого букмарклета в своем браузере, запускается установленный Instapaper и все приложения, имеющие графу «Добавить в Instapaper», будут делать то же самое.

Instapaper не стал бы столь популярным, не будь в нем тех социальных функций, какие есть сегодня. Например, возможность следить за статьями, читаемыми вашими друзьями. Но это вовсе не означает, что iCloud и предлагаемый им функционал плох. Создавая iCloud, Apple не ставила перед собой целью создание мультиплатформенного сервиса синхронизации, на котором разработчики могли бы построить свой бизнес. Apple стремится сделать свою платформу лучше и проще в использовании. Но эти ограничения созданы для того, чтобы заставить разработчиков работать над своими приложениями еще активнее, и в случае, если их продукт выйдет за рамки простого iOS/OS X приложения, они бы не колебались, остановившись перед выбором сервиса синхронизации.

iCloud очень сложная штука

Но несмотря на некоторые ограничения, iCloud является идеальным инструментом для самого разного применения. Многие разработчики не намерены расширять применение своих приложений за пределами iOS/OS X или для доступа к данным вне этих платформ. Для таких разработчиков iCloud — идеальный инструмент. Все данные хранятся в одном месте и пользователь всегда имеет к ним доступ. Тем не менее работа с iCloud для разработчиков непроста. В соответствующих инструментах при работе над созданием приложения нет переключателя, который просто активирует iCloud, в то время как Apple говорит о ненадобности особых технических знаний у разработчиков для включения работы iCloud, умалчивая о массе подводных камней, с которыми придется столкнуться разработчикам.

Так что, как только разработчик решается пойти по пути оснащения своего приложения синхронизацией iCloud, он обречен на столкновение с массой мелких сложных задачек, которые ему предстоит решить для обеспечения пользователя простым переключателем синхронизации iCloud. Возможно этого и следовало ожидать, так как синхронизация данных не самая простая штука.

Я, как пользователь и как разработчик, хочу видеть на всех используемых мной устройствах полноценно работающий iCloud, тем не менее реальность такова, что разработчику, остановившемуся перед выбором внедрения в свое приложение iCloud или какого-либо другого сервиса синхронизации, придется выбирать между комфортом для пользователя, будущим своего приложения и простотой внедрения сервиса в приложение.

Источник: tightwind.net