Тестирование и Отладка Приложения iCloud
Несмотря на то, что никакое приложение не закончено, пока это не было полностью протестировано и отлажено, эти шаги, возможно, более важны при принятии iCloud: число пользовательских сценариев, которые должно корректно обработать Ваше приложение, больше. Пользователь может иметь различные версии Вашего приложения на различных устройствах или выполнить Ваше приложение больше чем на одном устройстве одновременно. В то время как большой файл загружает на iCloud, пользователь может включить авиарежим. В редких случаях пользователь мог бы выйти из iCloud или переключиться на различную учетную запись iCloud.
Эта глава помогает ориентировать Вас к размышлению о iCloud при тестировании и отладке приложения.
Удостоверьтесь, что Ваше Устройство Сконфигурировано для iCloud
Если вещи не работают как ожидалось, сначала удостоверьтесь, что предварительные выборы правильно на месте.
Гарантируйте, что Ваши тестовые устройства правильно настраиваются для iCloud.
Ваш профиль настройки устройства и приложение ID должны быть правильно сконфигурированы для iCloud. Возможности Добавления анализа в Руководстве по Распределению приложений.
Гарантируйте, что Ваши дающие право запросы iCloud корректны.
Без надлежащих дающих право запросов на месте в Вашем проекте XCode, Ваше приложение не имеет никакого доступа к своим контейнерам 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. Реализуйте свое приложение для обработки этих сценариев и других, приходящих на ум для определенного приложения.
На устройстве 1, создайте и откройте новый документ с помощью приложения, и затем откройте документ об устройстве 2.
Документ теперь открыт на обоих устройствах.
На устройстве 1, включите авиарежим и затем отредактируйте документ.
На устройстве 2 (который является все еще онлайновым), отредактируйте документ также.
На устройстве 1, выключите авиарежим.
На каждом устройстве проверьте, является ли поведение разрешения конфликтов, поскольку Вы предназначаете его, чтобы быть.
На устройстве 1, создайте и откройте новый документ с помощью приложения, затем откройте документ об устройстве 2.
Документ теперь открыт на обоих устройствах.
Включите авиарежим на обоих устройствах, затем отредактируйте документ об обоих устройствах.
Попытайтесь варьироваться эта процедура путем окончания изменений на этих двух устройствах одновременно или в разное время.
На обоих устройствах выключите авиарежим.
Для этого шага также, попытайтесь варьироваться эта процедура путем выключения авиарежима одновременно или в разное время для этих двух устройств.
На каждом устройстве проверьте, является ли поведение разрешения конфликтов, поскольку Вы предназначаете его, чтобы быть.
Установите самую старую поддерживаемую версию своего приложения на устройстве 1; установите новейшую версию на устройстве 2.
Создайте документ о каждом устройстве. Позвольте достаточному количеству времени протекать так, чтобы каждый документ появился на другом устройстве.
Откройте каждый документ об устройстве, не использовавшемся для создания его. Или, в случае несоответствия версии, в котором Вы не поддерживаете открытие, гарантируйте, что поведение состоит в том, поскольку Вы предназначаете его, чтобы быть. Проверьте на проблемы.
Запустите Новый, Если Ваши Данные iCloud Становятся Противоречивыми Во время Разработки
При разработке приложения для данных в контейнере iCloud приложения возможно стать противоречивым. Если это происходит, поведение Вашего приложения может стать противоречивым также. При предыдущей работе теперь не работает код, попытайтесь освободить контейнер iCloud для приложения для запуска новый.
Можно освободить контейнер iCloud приложения использование устройства на iOS или Mac.
На каждом устройстве, содержащем экземпляр Вашего приложения, удалите тот экземпляр.
В iOS перейдите к Настройкам> iCloud>, Хранение и Резервное копирование> Управляют Хранением.
Если Ваше приложение не показано в Документах и группе Данных, касание Показывают Все.
На экране Manage Storage коснитесь имени своего приложения.
На экране Info хранения Вашего приложения коснитесь Редактирования, тогда коснитесь, Удаляют Все.
На предупреждении подтверждения, появляющемся, касание Удаляет Все.
После завершения этих шагов ожидайте, чтобы гарантировать, что удаление Вашего содержания контейнера iCloud распространило ко всем устройствам, присоединенным к Вашей учетной записи iCloud. Если контейнер имел большой объем данных, это занимает больше времени. На Mac можно использовать Средство поиска, чтобы видеть, был ли освобожден контейнер iCloud. Путь к контейнеру на Mac:
~/Library/Mobile Documents/<bundle-identifier-for-app>
Тогда переустановите свое приложение на каждом устройстве.
На каждом устройстве, содержащем экземпляр Вашего приложения, удалите тот экземпляр.
В OS X, открытых предпочтениях iCloud в Установках системы и нажимают Manage.
В Управлять диалоговом окне Хранения, появляющемся, найдите свое приложение в списке и щелкните по нему.
Нажмите 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> |