Apple Watch в двух словах: введение в функцию для разработчиков iOS
Опубликовано: 2022-03-11Было много трепета вокруг Apple Watch SDK, анонсированного на WWDC в июне прошлого года и выпущенного совсем недавно.
Это только первый раунд с ограниченным функционалом. За ним последует Apple Watch v2, но не так скоро, поэтому дальновидные разработчики iOS должны быть готовы подождать несколько месяцев.
Чувства среди разработчиков чрезвычайно разнообразны. Многие разработчики iOS разочарованы множеством ограничений, налагаемых Apple Watch SDK и его функциями. С другой стороны, многие из нас взволнованы, в то время как другие не слишком далеки от нейтральной позиции. Но, в конце концов, все, видимо, рады новой игрушке.
Одна вещь, которая бросается в глаза, — это то, как упоминаются пользователи Apple Watch. Они не являются ни пользователями , ни мобильными пользователями , ни пользователями просмотра , ни (с долей оригинальности) наблюдателями . Они просто носители . Термин, который звучит немного странно, потому что, если пользователь использует , подразумевая, что он взаимодействует, владелец носит , и это звучит как пассивное использование. Конечно, Apple Watch — далеко не пассивное устройство. Он сочетает в себе традиционные функции часов с более продвинутыми возможностями, доступными благодаря современным технологиям, особенно при использовании в сочетании с iPhone. Не так давно телефоны стали становиться чем-то большим, чем просто телефоны — история повторяется.
Тем не менее, в конце концов, имя владельца кажется разумным выбором. По крайней мере, при написании пользовательских историй мне не нужно указывать «Как пользователь Apple Watch , я хочу…» полностью, я могу просто сократить это до «Как пользователь , я хочу…» — меньше двусмысленности.
Устройство и пользовательский интерфейс
Опуская все функции Apple Watch, не связанные строго с разработкой, самая важная проблема, с которой приходится сталкиваться дизайнерам и разработчикам, — это размеры — на самом деле существует 2 разные модели Apple Watch:
- Экран 38 мм с разрешением 272x340 пикселей.
- Экран 42 мм с разрешением 312x390 пикселей.
с дисплеем сетчатки в обоих случаях.
Излишне говорить, что разработчики iOS должны гарантировать, что приложение хорошо выглядит в обеих версиях.
Возможность подключения Apple Watch
Apple Watch связываются с iPhone-компаньоном через Bluetooth 4.0, а также поддерживают NFC. Судя по всему, у него нет подключения к Wi-Fi. Хотя он может подключаться через iPhone и использовать как Wi-Fi, так и сотовую связь для передачи данных. Но в информации для прессы Apple четко заявляет, что он также поддерживает Wi-Fi 802.11b/g.
Взаимодействие с пользователем
Взаимодействие с пользователем (или взаимодействие с пользователем, если это предпочтительнее) может происходить четырьмя различными способами:
- простое прикосновение: типичным примером является нажатие на кнопку
- принудительное касание: активируется приложением большей силы при нажатии и удержании экрана. Подобно щелчку правой кнопкой мыши на ПК, отобразится контекстное меню (содержащее до 4 пунктов).
- жест: вертикальный свайп для прокрутки, горизонтальный свайп для перехода между страницами, левый край для перехода назад
- цифровая корона: аппаратный ввод, используемый для точной настройки прокрутки
Существуют некоторые ограничения в отношении взаимодействия с пользователем, в частности в отношении жестов:
- они предопределены, поэтому пользовательские жесты не поддерживаются
- мультитач не поддерживается, поэтому для масштабирования или подобных жестов, требующих использования более одного пальца, не требуется масштабирование.
Вот пример контекстного меню из руководства Apple WatchKit.
Пользовательский интерфейс
Говоря о пользовательском интерфейсе Apple Watch, существует несколько ограничений, налагаемых уменьшенным размером экрана, выбором дизайна и во многих случаях естественным следствием используемого оборудования. Мы ожидаем, что некоторые из них изменятся к лучшему в будущих выпусках SDK, хотя невозможно предсказать или спрогнозировать, что изменится на самом деле.
Первое ограничение касается того, как реализован пользовательский интерфейс: только через раскадровки.
Навигация Apple Watch
WatchKit предлагает два взаимоисключающих способа навигации по представлениям приложения Apple Watch:
- иерархическая модель навигации, похожая на ту, которая используется в iOS, с представлениями, складывающимися во время навигации
- модель на основе плоской страницы, где пользователь может перемещаться между страницами, проводя пальцем влево и вправо
К сожалению, объединить эти две модели навигации в одном приложении невозможно. Один из них должен быть выбран и использован во всем приложении.
Однако любой контроллер интерфейса может представлять модальный контроллер интерфейса, который может быть либо одним контроллером интерфейса, либо несколькими контроллерами интерфейса, организованными с использованием модели навигации по страницам.
Элементы пользовательского интерфейса
Существует 11 различных компонентов интерфейса:
- кнопка
- ползунок
- изображение
- этикетка
- разделитель
- ползунок
- выключатель
- стол
- date: автоматическое отображение текущей даты или времени
- таймер: отображение таймера обратного отсчета, автоматически обновляемого
- группа: контейнер для одного или нескольких дочерних компонентов
- карта: отображение неинтерактивной карты, опционально с максимальными 5 аннотациями
Макеты
Компонент группы можно использовать для объединения элементов пользовательского интерфейса Apple Watch в вертикальном или горизонтальном макете. Элементы будут автоматически раскладываться в зависимости от их размера. Здесь доступна некоторая степень гибкости, учитывая, что группы могут быть вложенными.
К сожалению, автоматическая раскладка недоступна. Но, учитывая, что пользовательский интерфейс намного проще по сравнению с iOS-аналогом, это, наверное, не большая потеря.
Для списков компонент таблицы создает содержимое и управляет им, используя модель с одним столбцом, как и UITableView
. Однако он не использует шаблон делегирования — источник данных напрямую предоставляется таблице путем указания сначала количества строк, а затем инициализации содержимого каждой строки в цикле for. Положительным моментом является то, что по-прежнему можно использовать настраиваемые строки таблицы (например, ячейки на жаргоне iOS).
Взгляды
Glances — это одностраничные представления без возможности прокрутки, предназначенные только для чтения, которые используются для отображения моментального снимка своевременных и релевантных данных, относящихся к конкретному приложению. Никакое взаимодействие с пользователем не допускается, за исключением события касания. Коснитесь взгляда , чтобы просто запустить приложение, при необходимости предоставив контекст, позволяющий приложению отображать определенный контроллер интерфейса.
Например, погодное приложение Apple Watch может использовать Glance для отображения текущей температуры, местоположения и т. д. При нажатии на него открывается приложение с более подробной информацией.

Вот пример Glance из официального руководства Apple WatchKit.
Уведомления Apple Watch
Есть 2 типа уведомлений: краткое и длинное .
Кратковременное уведомление используется, чтобы предупредить владельца о том, что что-то произошло, и оно автоматически отключается, когда запястье опускается. Макет очень прост и состоит из значка приложения, имени приложения и заголовка уведомления.
Удерживая запястье поднятым в течение некоторого времени или явно нажимая на короткое уведомление, оно превратится в длинное уведомление . Этот тип уведомлений предоставляет более подробную информацию и поддерживает взаимодействие с пользователем с помощью настраиваемых кнопок. Эти кнопки могут отправлять уведомления в приложение. В отличие от короткого уведомления, пользователь должен явно отклонить длинное уведомление, нажав кнопку, которая автоматически отображается в нижней части представления.
Дополнительную информацию об использовании уведомлений Apple Watch можно найти здесь.
Разработка
Архитектура
Загрузив версию Xcode, поддерживающую WatchKit (в настоящее время это бета-версия 6.2), и попытавшись начать работу с проектом WatchKit, не читая никакой документации, разработчик может запутаться, поскольку шаблона WatchKit нет:
Отдельного приложения для часов не существует, и приложение для часов можно добавить только в качестве новой цели к существующему приложению iOS.
Причина этого кроется в архитектуре и в том, как приложение для часов взаимодействует с соответствующим приложением для iOS:
Когда приложение запускается на часах, автоматически запускается сопутствующее расширение iOS. Они оба работают в синергии: приложение для часов показывает контент владельцу и реагирует на взаимодействие, в то время как расширение для iOS делает все остальное. Фактически на часах не выполняется код приложения: вся обработка делегируется расширению iOS.
Эта модель очень похожа на модель браузера <-> веб-приложения, где логика домена выполняется на стороне сервера, а клиентская сторона отвечает за отображение контента пользователю и реагирование на действия пользователя.
Приложение Watch, установленное на устройстве, состоит из раскадровки и всех связанных статических ресурсов, упакованных в пакет. Этот пакет является статическим, что означает, что добавление или изменение любых ресурсов, представлений, изображений и т. д. невозможно во время выполнения.
Эта статическая модель клиент-сервер накладывает ряд ограничений на разработчика iOS, который хочет добавить приложение Watch в свой репертуар, и, вероятно, это одна из основных причин, по которой некоторые разработчики не отреагировали положительно. Еще одно популярное замечание касается анимации: она просто не поддерживается. Единственный способ имитировать анимацию — упаковать отдельные кадры в приложение для часов, а затем имитировать анимацию, отображая изображения в последовательности. Хорошей новостью является то, что последовательно называя кадры, вы можете автоматизировать анимацию непосредственно из Interface Builder, хотя то же самое можно сделать из кода с помощью одного вызова метода управления изображением.
Однако Apple уже объявила, что в следующем году будет выпущена новая версия с поддержкой нативных приложений, подробностей о которых пока нет.
Платформа Apple Watch: краткий обзор
WatchKit не использует, не наследует и не специализируется на UIKit. Был реализован новый фреймворк, специально разработанный и оптимизированный для часов, их крошечного дисплея и ограниченного аппаратного обеспечения. Фреймворк состоит всего из 15 классов, 12 из которых являются компонентами пользовательского интерфейса (метка, кнопка и т. д.).
Наиболее важным классом, предоставляемым фреймворком, является WKInterfaceController
, аналог WatchKit для UIViewController
. Итак, то, что в iOS (и OSX) называется контроллером представления , в Apple Watch — контроллером интерфейса .
Не вдаваясь слишком глубоко, наиболее заметным улучшением по сравнению с UIKit, с точки зрения разработчика Apple, является создание шаблона для передачи данных между контроллерами интерфейса. Быстрый взгляд на инициализатор:
Swift init(context: AnyObject?) // context from pushing controller or nil
показывает, что можно предоставить произвольный объект экземпляру контроллера интерфейса (называемого context
во всех API), упрощая и стандартизируя передачу данных от одного контроллера интерфейса к другому. Единственным недостатком является то, что объект имеет не общий тип, а непрозрачный AnyObject
, который должен быть приведен к ожидаемому типу внутри инициализатора целевого контроллера интерфейса. Это, вероятно, компромисс для того, чтобы все еще иметь (и, вероятно, также хотеть) продолжать использовать Objective C.
Жизненный цикл контроллера интерфейса упрощен по сравнению с аналогом контроллера представления и состоит всего из 3 переходов:
-
init
: вызывается при создании экземпляра объекта -
willActivate
: вызывается, когда содержимое должно быть отображено -
didDeactivate
: вызывается, когда интерфейс только что был скрыт
Помимо отображения контента пользователю, контроллер интерфейса также отвечает за:
- обработка взаимодействия с пользователем
- управление контекстным меню
- координировать деятельность по передаче
- ответить на уведомление
Готов ли Apple WatchKit?
С некоторыми ограничениями комплект часов может показаться незрелым продуктом. И на самом деле это так. Он не поддерживает нативные приложения для часов, не говоря уже о том, что на рынке пока нет устройства для часов, поэтому разработчики по-прежнему не могут протестировать свои приложения и получить реальное представление о том, как работает приложение.
Хорошо, есть симулятор, который на самом деле не является независимым симулятором, но доступен как внешний дисплей для симулятора iOS (через меню «Оборудование» -> «Внешние дисплеи»). Но симулятор никогда не заменит реальное устройство — он хорош при разработке и при отладке, но этого недостаточно.
WatchKit — это всего лишь предварительная версия, бета-версия, закуска, которая будет развиваться с каждым новым выпуском. Разработчики iOS получили первую версию, давайте поиграем с ней и попробуем выжать из нее максимум.