Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Руководство по программированию часов Apple

PDF
На этой странице

Архитектура приложения WatchKit

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

Иллюстрация, 3-1Communication между приложением WatchKit и расширением WatchKit image: ../Art/app_communication_2x.png

Управление сценами: контроллер интерфейса

Каждой сценой управляет единственный объект контроллера интерфейса, который является экземпляром WKInterfaceController класс. Контроллер интерфейса в WatchKit служит той же цели как контроллер представления в iOS: Это представляет и управляет содержанием на экране и реагирует на взаимодействие с пользователем с тем содержанием. В отличие от контроллера представления, контроллер интерфейса не управляет фактическими представлениями Вашего интерфейса. Теми представлениями управляет для Вас негласно WatchKit.

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

Жизненный цикл приложения WatchKit

Взаимодействие с пользователем с Часами Apple управляет запуском Вашего приложения и его жизненного цикла. Пользователь может запустить Ваше приложение от домашнего экрана, взаимодействовать с Вашим взглядом или просмотреть уведомления с помощью пользовательского UI. Каждое из этих взаимодействий запускает Ваше приложение WatchKit и соответствующее расширение WatchKit. Ваше приложение WatchKit и WatchKit передают информацию назад и вперед, пока пользователь не прекращает взаимодействовать с Вашим приложением, в которой точке iOS приостанавливает расширение до следующего взаимодействия с пользователем.

Во время запуска WatchKit автоматически загружает надлежащую сцену для текущего взаимодействия. Если пользователь просматривает взгляд Вашего приложения, WatchKit загружает сцену взгляда из Вашей раскадровки; если пользователь запустил Ваше приложение непосредственно, WatchKit загружает начальную сцену для Вашего приложения. После того, как это загружает сцену, WatchKit просит, чтобы расширение WatchKit создало соответствующий объект контроллера интерфейса, который Вы используете для подготовки сцены к дисплею пользователю. Рисунок 3-2 показывает шаги для этой последовательности. Вы узнаете больше, как контроллеры интерфейса работают в Основах UI.

Фигурируйте 3-2Launching приложение WatchKit image: ../Art/launch_cycle_2x.png

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

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

Ваше расширение WatchKit остается работать только, в то время как пользователь взаимодействует с Вашим приложением на Часах Apple. Взаимодействия с Часами Apple предназначаются для резюме, таким образом, контроллеры интерфейса должны быть легкими и никогда не выполнять продолжительные задачи. Когда пользователь выходит из Вашего приложения явно или прекращает взаимодействовать с часами Apple, iOS деактивировал текущий контроллер интерфейса и приостанавливает Ваше расширение, как показано на рисунке 3-3.

Изобразите 3-3The жизненный цикл контроллера интерфейса image: ../Art/watch_app_lifecycle_simple_2x.png

Задачи выполнить на различных этапах срока действия приложения

На различных этапах срока действия Вашего приложения iOS вызывает методы Вашего WKInterfaceController объекты дать Вам шанс ответить. Таблица 3-1 перечисляет ключевые методы, которые необходимо почти всегда реализовывать в контроллерах интерфейса, вместе с видами задач, которые Вы выполняете в них.

Таблица 3-1Key методы WKInterfaceController

Метод

Задачи выполнить

init

Этот метод является Вашим первым шансом инициализировать Ваш контроллер интерфейса.

awakeWithContext:

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

willActivate

Этот метод сообщает, что Ваш интерфейс скоро будет видим пользователю. Используйте этот метод только для внесения небольших изменений в интерфейс. Например, Вы могли бы использовать этот метод для обновления метки на основе новых данных. Объем Вашей интерфейсной инициализации должен все еще произойти в init и awakeWithContext: методы.

didDeactivate

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

Вы не можете установить значения ни для каких интерфейсных объектов от этого метода. Со времени этот метод вызывают ко времени willActivate метод вызывают снова, любые попытки установить значения для интерфейсных объектов проигнорированы.

Отладка Кода Активации в Средстве моделирования iOS

Во время тестирования можно заблокировать и разблокировать средство моделирования, чтобы проверить, что код активации и деактивации работает как ожидалось. При использовании команды Hardware> Lock для блокировки средства моделирования, WatchKit вызывает didDeactivate метод текущего контроллера интерфейса. При последующем разблокировании средства моделирования WatchKit вызывает willActivate метод контроллера интерфейса.

Совместное использование Данных с Содержанием приложения для iOS

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

Вы устанавливаете группу общего приложения от вкладки Capabilities Вашего приложения для iOS и расширения WatchKit. Включение возможности Групп приложений добавляет дающий право файл (по мере необходимости) к каждой цели и добавляет com.apple.security.application-groups право на тот файл. Для совместного использования данных обеим целям нужно было выбрать ту же группу приложений.

Во время выполнения Вы совместно используете файлы между процессами путем чтения и записи тех файлов в совместно используемом контейнерном каталоге. Для доступа к контейнерному каталогу используйте containerURLForSecurityApplicationGroupIdentifier: метод NSFileManager получать базовый URL для каталога. Используйте предоставленный URL, чтобы перечислить содержание каталога или создать новый URLs для файлов в каталоге.

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

Связь Непосредственно с Содержанием приложения для iOS

Приложения, работающие в тесном сотрудничестве с их содержанием приложения для iOS, могут использовать openParentApplication:reply: метод, чтобы отправить запросы к тому приложению и получить ответ. Расширения WatchKit не поддерживают фоновые режимы выполнения; они работают только, в то время как пользователь взаимодействует с соответствующим приложением на Часах Apple. Их содержание приложения для iOS имеет меньше ограничений и может быть сконфигурировано, чтобы работать в фоновом режиме или собрать информацию от имени расширения WatchKit. Действия, которые могли бы потребовать, чтобы дополнительное время завершилось, такие как выборка расположения пользователя, должны поэтому быть выполнены приложением для iOS и связались назад с расширением WatchKit.

Когда Вы вызываете openParentApplication:reply: метод, iOS запускает или будит содержание приложения для iOS в фоновом режиме и вызывает application:handleWatchKitExtensionRequest:reply: метод его делегата приложения. Делегат приложения выполняет запрос с помощью предоставленного словаря и затем возвращает ответ на расширение WatchKit.