Модернизация моего приложения для iCloud - PullRequest
3 голосов
/ 19 октября 2011

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

Рабочий процесс моего приложения

  1. Пользователь просматривает магазин, в котором перечислены серии учебных планов, которые он может загрузить
  2. Пользователь выбирает план и скачивает его
  3. Я извлекаю план обучения из нашего веб-сервера, настроенный в соответствии с их потребностями
  4. Я добавляю имя файла для плана обучения, который они скачали, в список планов, которыми они владеют
  5. Пользователь открывает план тренировок и видит ежедневное расписание

Я хочу, чтобы пользователь мог сделать это на своем iPhone, а затем открыть свой iPad и увидеть точно такие же планы тренировок, синхронизированные там.

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

Мое понимание Я не понимаю, нужно ли мне сохранять папку «Документы», а затем сохранять копию в папке «iCloud» ИЛИ просто ли я теперь буду писать в папку «iCloud».

Если это первое, я полагаю, что я просто записываю копию файлов папки «Документы» в область iCloud, чтобы подтолкнуть его вверх, но как мне обнаружить новый файл в папке iCloud и скопировать его обратно в папку «Мои документы»?

Если это последнее, файлы должны просто существовать, верно?

Я надеюсь, что он последний и все еще поддерживает устройства без включенного iCloud ...

Спасибо за любую помощь в разъяснении.

Адам

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

API iCloud довольно хорошо документирован, и есть специальная глава, которая посвящена тому, что вы ищете:

Управление жизненным циклом документа

Документ проходит типичный жизненный цикл. На основе документов Приложение отвечает за управление его прогрессом через это цикл. Как видно из следующего списка, большинство из них События жизненного цикла инициируются пользователем:

  1. Пользователь сначала создает документ.
  2. Пользователь открывает существующий документ, а приложение отображает его в представлении или представлениях документа.
  3. Пользователь редактирует документ. Пользователь может попросить поместить документ в хранилище iCloud или может запросить удаление документа из хранилища iCloud.
  4. Во время редактирования, сохранения или других действий могут возникать ошибки или конфликты; приложение должно узнать об этих ошибках и конфликтах и ​​либо попытаться их обработать, либо проинформировать пользователя.
  5. Пользователь закрывает выбранный документ. Пользователь удаляет существующий документ. В следующих разделах обсуждаются процедуры, которые приложение на основе документа должно выполнить для этих операций жизненного цикла.

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

На других устройствах, которые настроены на использование хранилища iCloud, у вас есть возможность обнаружить документы, доступные через запрос метаданных.

http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle.html#//apple_ref/doc/uid/TP40011149-CH4-SW1

1 голос
/ 22 октября 2011

Если вы ищете очень простой пример, который реализует iCloud, взгляните на это:

Основы iCloud и пример кода

Это дает вам конкретный пример того, как реализовать некоторые этапы, которые Рог упомянул в своем посте выше. Надеюсь, это поможет.

...