Тестирование и Отладка Приложения iCloud

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

Эта глава помогает ориентировать Вас к размышлению о iCloud при тестировании и отладке приложения.

Удостоверьтесь, что Ваше Устройство Сконфигурировано для iCloud

Если вещи не работают как ожидалось, сначала удостоверьтесь, что предварительные выборы правильно на месте.

Примите задержку во внимание

При тестировании не ожидайте, что изменения немедленно распространят от одного устройства до другого.

Можно программно определить, добрался ли файл до серверов iCloud путем проверки значения его URL’s NSURLUbiquitousItemIsUploadedKey ключ. Сделайте это путем вызова NSURL метод getResourceValue:forKey:error:. Булевская переменная ключа NSNumber значение содержит true если был успешно загружен файл.

Аналогично, можно программно определить, присутствует ли файл iCloud локально. Проверьте значение NSURLUbiquitousItemIsDownloadedKey ключ соответствующего URL путем вызова NSURL метод getResourceValue:forKey:error:.

В обоих случаях получите файл URLs из Вашего приложения NSMetadataQuery объект, как описано в Обязанностях за Приложение по Использованию Документов iCloud.

Контролируйте сетевой трафик своего приложения

Следите за сетевой активностью при тестировании приложения, проверке на неуместные суммы сетевого трафика. Для iOS используйте инструмент Сетевой активности, найденный в Инструментальном аналитическом инструменте. На Mac можно использовать Сеть OS X Служебное приложение.

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

Для получения информации о профилировании приложения с Инструментами см. Инструментальное Руководство пользователя.

Используйте два устройства для тестирования конфликтов документа

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

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

bullet
Протестировать версию документа конфликтует с одним устройством оффлайн
  1. На устройстве 1, создайте и откройте новый документ с помощью приложения, и затем откройте документ об устройстве 2.

    Документ теперь открыт на обоих устройствах.

  2. На устройстве 1, включите авиарежим и затем отредактируйте документ.

  3. На устройстве 2 (который является все еще онлайновым), отредактируйте документ также.

  4. На устройстве 1, выключите авиарежим.

  5. На каждом устройстве проверьте, является ли поведение разрешения конфликтов, поскольку Вы предназначаете его, чтобы быть.

bullet
Протестировать версию документа конфликтует с двумя устройствами оффлайн
  1. На устройстве 1, создайте и откройте новый документ с помощью приложения, затем откройте документ об устройстве 2.

    Документ теперь открыт на обоих устройствах.

  2. Включите авиарежим на обоих устройствах, затем отредактируйте документ об обоих устройствах.

    Попытайтесь варьироваться эта процедура путем окончания изменений на этих двух устройствах одновременно или в разное время.

  3. На обоих устройствах выключите авиарежим.

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

  4. На каждом устройстве проверьте, является ли поведение разрешения конфликтов, поскольку Вы предназначаете его, чтобы быть.

bullet
Протестировать прямую совместимость и обратную совместимость Вашего формата документа
  1. Установите самую старую поддерживаемую версию своего приложения на устройстве 1; установите новейшую версию на устройстве 2.

  2. Создайте документ о каждом устройстве. Позвольте достаточному количеству времени протекать так, чтобы каждый документ появился на другом устройстве.

  3. Откройте каждый документ об устройстве, не использовавшемся для создания его. Или, в случае несоответствия версии, в котором Вы не поддерживаете открытие, гарантируйте, что поведение состоит в том, поскольку Вы предназначаете его, чтобы быть. Проверьте на проблемы.

bullet
Протестировать управление документооборотом
  1. Сохраните документ к iCloud, затем откройте тот документ о двух устройствах.

  2. Используя устройство 1, переименуйте (или, альтернативно, удалите), документ.

  3. Проверьте устройство 2, является ли поведение, поскольку Вы предназначаете его, чтобы быть.

Запустите Новый, Если Ваши Данные iCloud Становятся Противоречивыми Во время Разработки

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

Можно освободить контейнер iCloud приложения использование устройства на iOS или Mac.

bullet
Освободить контейнер iCloud для Вашего приложения, с помощью устройства на iOS
  1. На каждом устройстве, содержащем экземпляр Вашего приложения, удалите тот экземпляр.

  2. В iOS перейдите к Настройкам> iCloud>, Хранение и Резервное копирование> Управляют Хранением.

  3. Если Ваше приложение не показано в Документах и группе Данных, касание Показывают Все.

  4. На экране Manage Storage коснитесь имени своего приложения.

  5. На экране Info хранения Вашего приложения коснитесь Редактирования, тогда коснитесь, Удаляют Все.

    На предупреждении подтверждения, появляющемся, касание Удаляет Все.

После завершения этих шагов ожидайте, чтобы гарантировать, что удаление Вашего содержания контейнера iCloud распространило ко всем устройствам, присоединенным к Вашей учетной записи iCloud. Если контейнер имел большой объем данных, это занимает больше времени. На Mac можно использовать Средство поиска, чтобы видеть, был ли освобожден контейнер iCloud. Путь к контейнеру на Mac:

~/Library/Mobile Documents/<bundle-identifier-for-app>

Тогда переустановите свое приложение на каждом устройстве.

bullet
Освободить контейнер iCloud для Вашего приложения, с помощью Mac
  1. На каждом устройстве, содержащем экземпляр Вашего приложения, удалите тот экземпляр.

  2. В OS X, открытых предпочтениях iCloud в Установках системы и нажимают Manage.

  3. В Управлять диалоговом окне Хранения, появляющемся, найдите свое приложение в списке и щелкните по нему.

  4. Нажмите Delete All.

    На предупреждении подтверждения, появляющемся, нажмите Delete. Тогда нажмите Done.

После завершения этих шагов ожидайте, чтобы гарантировать, что удаление Вашего содержания контейнера iCloud распространило ко всем устройствам, присоединенным к Вашей учетной записи iCloud. Если контейнер имел большой объем данных, это занимает больше времени. На Mac можно использовать Средство поиска, чтобы видеть, был ли освобожден контейнер iCloud. Путь к контейнеру на Mac:

~/Library/Mobile Documents/<bundle-identifier-for-app>

Тогда переустановите свое приложение на каждом устройстве.

Если Вы обеспечиваете версию OS X своего поддерживающего iCloud приложения, и Вы хотите запуститься абсолютно новый, также удалить содержание контейнера Тестовой среды приложения приложения на каждом Mac, на котором было установлено Ваше приложение. Это гарантирует, что также удалены любые другие специфичные для приложения данные, которые, возможно, стали противоречивыми. Путь для контейнера Тестовой среды приложения на Mac:

~/Library/Containers/<bundle-name-for-app>