Всего пару дней назад Apple выпустила Xcode 6.2 с поддержкой бета-версии iOS 8.2 и WatchKit. Этот фреймворк предназначен для взаимодействия с Apple Watch и разработки приложений для него.
Однако все не так просто.
Первая и самая важная особенность приложений Apple Watch заключается в том, что их код работает не на самих часах, а на iPhone. Как это произошло? Все очень просто: приложение watch содержит только файлы пользовательского интерфейса, а расширение WatchKit содержит все контроллеры для обработки событий.
Это обязательные компоненты для приложения, которому необходимо взаимодействовать с часами.
При установке приложения с поддержкой WatchKit на iPhone пользователю также будет предложено установить приложение на Watch (конечно, если у пользователя есть Watch и они сопряжены с iPhone).
При запуске приложения на часах отображается интерфейс, а на телефоне код выполняется в фоновом режиме.
Очевидный и совсем не приятный вывод – без iPhone (или Jailbreak) запустить на Watch стороннее ПО невозможно.
Существует три типа приложений для часов: Watch App, Glance Interface и Notifications. Первый из них наиболее функционален, о нем я расскажу в статье.
Интерфейс и уведомления Glance предназначены для оповещения пользователей о любых событиях, Glance позволяет создать свой собственный тип уведомлений, а Notifications работает с локальными и push-уведомлениями, отображает их пользователю и позволяет добавить несколько кнопок для действий.
Давайте начнем.
Запустите Xcode, выберите «Создать новый проект Xcode» и создайте новый проект из шаблона iOS — Приложение — Приложение единого представления.
Название проекта, организация – на ваш вкус.
Мой пример будет написан на Objective-C, поэтому мы выберем его.
После выбора папки для сохранения вашего проекта Xcode создаст его там и откроет. Наше приложение пока может показывать только белый экран на iPhone, добавим поддержку Watch: заходим в меню Файл -> Создать -> Цель и в появившемся окне выбираем iOS — Apple Watch — WatchApp:
В следующем окне настраиваются основные параметры приложения Watch: язык программирования (Objective-C), типы поддерживаемых режимов приложения (интерфейс Glance и уведомления я удалил, останется только приложение Watch):
После нажатия «Готово» обратите внимание на файлы, которые появляются в Навигаторе проекта:
InterfaceController.m — это контроллер интерфейса нашего приложения.
Этот файл будет выполнен на iPhone. Interface.storyboard — интерфейс приложения на Watch. С его помощью мы можем изменить интерфейс приложения на Watch. Первым приложением станет традиционный «Helloworld».
Нажмите Interface.storyboard и увидите экран просмотра в редакторе:
У часов не так много компонентов: Кнопка, Метка, Слайдер, Изображение, Разделитель, Переключатель, Дата, Карта, Меню и Таблица (довольно аскетичный аналог UITableView).
В режиме Glance выбор еще меньше — например, вы не можете добавлять кнопки.
В Helloworld нам понадобится кнопка и текстовая метка.
Чтобы добавить компоненты Label и Button, найдите их в библиотеке объектов (обычно внизу справа):
Мы просто перетаскиваем нужные нам компоненты на форму Watch. В инспекторе атрибутов я установил заголовок кнопки и текст для метки:
У нас есть интерфейс, но InterfaceController.m о нем не знает. Давайте это исправим — нам нужно добавить обработчик нажатия кнопки и свойство, отвечающее за Label. Для удобного редактирования переключите Xcode в Помощник редактора — кнопка со смокингом слева вверху:
В этом режиме Xcode показывает файл интерфейса с одной стороны и редактор кода с другой:
Ознакомимся с кодом и интерфейсом — перетащите Ярлык и Кнопку с зажатой правой кнопкой мыши на код контроллера, между
интерфейс InterfaceController() и конец.
Для метки мы создаем свойство (firstLabel), а для кнопки — действие (tapOnButton).
Xcode автоматически создаст пустой метод TapOnButton для кнопки в разделе реализации.
Сделаем последний штрих — изменим текст firstLabel, нажав кнопку.
Редактирование метода TapOnButton:
Интересно, что приведенный ниже код не будет работать:- (IBAction)tapOnButton { [_firstLabel setText:@"Hello World!"]; }
firstLabel.text = @"Text";
firstLabel — это объект типа WKInterfaceLabel, который имеет только метод для установки текста, но не свойство для его чтения.
Из-за этих ограничений платформы Apple рекомендует хранить все значения элементов в коде, а не полагаться на их чтение непосредственно из компонента в интерфейсе Watch. Чтобы запустить приложение на часах, вам необходимо выбрать правильную активную диаграмму проекта.
По умолчанию запускается приложение iPhone, нам нужно выбрать приложение Watch для запуска, в моем примере это вторая строка.
Выберите iPhone 6:
Запустим приложение.
Если окно с симулятором Watch не появилось, зайдите в настройки симулятора и включите:
При запуске все выглядит так:
Наконец, нажимаем кнопку и с заметной задержкой наблюдаем результат:
Вот как в целом выглядит создание простого приложения Watch. Поскольку приложение работает на iPhone, программист имеет доступ ко всем методам и данным самого iPhone (Apple уже уведомила о возможных ограничениях на энергозатратные операции).
WatchKit — это «мост» между кодом iPhone и интерфейсом Watch. Готов принять критику по статье, предложения по улучшению (или написать новую на эту тему), постараюсь ответить на вопросы.
Спасибо за внимание.
Теги: #apple watch #разработка под iOS #hello world #objective-c #руководство #программирование #разработка под iOS
-
Ад
19 Oct, 24 -
Объяснение Необъяснимого
19 Oct, 24 -
Medusa Api: Написание Полнотекстового Rss
19 Oct, 24