Разработка Apple Watch приложений для новичков

В этой статье речь пойдет о создании простого приложения для Apple Watch. Прежде чем начать разрабатывать приложение для часов, нужно скачать и установить WatchKit SDK. Этот материал ориентирован на новичков, имеющих небогатый опыт программирования. Статью не стоит рассматривать, как учебник по Objective-C или Swift. Вы почти не найдете здесь исходного кода. Статья фокусируется именно на процессе создания приложения для Apple Watch.

Разработка Apple Watch приложений

1. Настройка среды разработки

Первым шагом следует скачать sample iOS проект. Apple Watch приложение должно разрабатываться и собираться в паре с iPhone приложением. В настоящее время не существует возможности создания отдельного приложения для часов. На часы загружается только интерфейс, а вся логика и обработка событий выполняется на iPhone. В сети существует огромное количество материалов, рассказывающих о создании приложений на iPhone. Даже у нас был подобный урок. Поэтому не будем заострять на этом моменте внимание, а просто покажем, как добавить в существующее приложение поддержку часов.

Для начала скачайте исходные файлы WatchKit проекта. Скачать их можно тут . Этот проект содержит компоненты и iPhone и Apple Watch приложений и демонстрирует богатство элементов пользовательского интерфейса платформы Apple Watch.

Для работы вам понадобится Xcode 6.2. Запустите IDE и откройте проект. На экране должно появиться что-то вроде этого

Apple Watch приложение в Xcode

Запустите проект. Убедитесь, что в качестве целевой платформы выбрано WatchKid Catalog. Появится iPhone эмулятор с запущенным проектом.

2. Архитектура Apple Watch

Приложение для часов состоит из двух частей: WatchKit app и WatchKit extension. WatchKit app непосредственно загружается в Apple Watch. Эта часть содержит статические ресурсы и все экраны. Непосредственно в часах не выполняется никакого кода. Все что умеет WatchKit app - это понять, что пользователь взаимодействовал с каким-либо элементом интерфейса и отправить соответствующий запрос в работающий на iPhone WatchKit extension. Именно WatchKit extension создает в runtime объекты, реализует логику работы приложения и обновляет данные WatchKit app.

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

3. Создание WatchKit App в существующем iPhone app проекте

В этом уроке мы не создавали WatchKit app компоненты, поскольку они уже были созданы для нас (мы же исследуем учебный проект). Однако, в случае, если у вас уже есть собственное iPhone приложение, и вы хотите добавить в него возможность взаимодействия с часами Apple, вам нужно выполнить следующие шаги:

  1. В XCode откройте свой iPhone проект и выберите меню File>New>Target, где щелкните по Apple Watch
  2. В результате откроется окно с настройками Apple Watch приложения. Тут можно указать, будете ли вы использовать интерфейс уведомлений (custom notification interface) или glance экран. Собственно это все. Можете программировать часы.
Архитектура Apple Watch приложения

4. Компонент WatchKit app

Откройте файл Interface.storyboard, находящийся в папке WatchKit app в Xcode. WatchKit App компонент непосредственно загружается в часы. Показанный ниже скриншот содержит все UI экраны, которые будут в нашем Apple Watch приложении. Вы можете добавлять сюда различные UI элементы: кнопки, надписи. Можете поменять текст и цвета. Можете удалять и перемещать их.

Xcode

5. WatchKit Extension компонент

WatchKit Extension компонент содержит всю логику работы Apple Watch приложения. Именно здесь настраивается реакция на действия пользователей, и обновляются данные на экране часов. Обратите внимание, Вы не можете удалять UI элементы с экрана, однако можно менять их прозрачность.

В Xcode выберите Button view controller, щелкнув по его названию один раз. В правой части Xcode расположен Identity Inspector (третья иконка). После щелчка по кнопке там откроется Custom Class, который связывает экран с классом контроллера вида. В нашем случае кнопка связана с AAPLButtonDetailController.

Xcode

Если нажать маленький кружочек со стрелкой внутри, расположенный рядом с AAPLButtonDetailController, вас перебросит в файл класса AAPLButtonDetailController.h Конечно, вы можете открыть этот файл и через расположенную в левой части Xcode навигационную панель. Не вдаваясь глубоко в Objective-C заметим, что контроллер состоит из двух файлов: файла заголовка (AAPLButtonDetailController.h) и файла имплементации (AAPLButtonDetailController.m). В файле заголовка обычно намечается содержание класса, а сама реализация и большая часть кода находится в файле имплементации.

Даже не имея богатого опыта в программировании, исследование файла имплементации позволяет подметить несколько важных вещей. Мы декларируем несколько переменных, в частности defaultButton и hiddenButton, которые соответствуют кнопкам, которые мы видели в раскадровке. Нам нужно объявить и связать с UI переменную для любого элемента пользовательского интерфейса, если подразумевается какая-то реакция на взаимодействие с ним.

Прокручивая код вниз можно увидеть еще несколько интересных кусков кода. Обратите внимание на названия методов. Любой IBAction метод - это функция, которая вызывается когда пользователь выбирает соответствующий элемент. Если вы посмотрите на раскадровку, то увидите, что названия методов связаны с названиями кнопок. Методы hideAndShow вызываются, когда нужно спрятать элемент или вернуть его в первоначальное состояние. Поройтесь в коде и посмотрите, как названия методов связаны с элементами UI.

6. Glance и уведомления

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

Xcode

Давайте в Xcode вернемся к файлу интерфейса WatchKit App компонента и найдите Glance Interface Controller. На glance экране обратите внимание на две вещи. Во-первых, изображение имеет внешний указатель на glanceImage, который можно найти и в коде. С помощью этого имени можно во время работы программы управлять картинкой. Во-вторых, аналогично тому, как мы делали с кнопкой, в Identity Inspector можно найти класс, связанный с нашим glance экраном. В данном случае это будет AAPLGlanceController. И опять же, нажав на кружочек со стрелкой можно попасть в соответствующий класс.

В файле реализации класса AAPLGlanceController.m можно найти метод willActivate, это WKInterfaceController метод который вызывается при активации glance. Здесь можно перехватить поток выполнения программы и подгрузить нужную картинку, например соответствующую размеру экрана Apple Watch (42мм или 38 мм).

Мы также используем Handoff, чтобы передать управление imgeDetailController с некоторой дополнительной мета-информацией:

// Use Handoff to route the wearer to the image detail controller when the glance is tapped.
[self updateUserActivity:@”com.example.apple-samplecode.WatchKit-Catalog” userInfo:@{
@”controllerName”: @”imageDetailController”,
@”detailInfo”: @”This is some more detailed information to pass.”
}];

Следующая строка позволяет определить, что часы имеют большой экран

([[WKInterfaceDevice currentDevice] screenBounds].size.width > 136.0) 

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

Вернемся на экран раскадровки в Xcode и найдем Static Notification Interface Controller. Как и в случае с glance, класс реализации содержит метод willActivate. Вам также следует обратить внимание на два важных метода:

– (void)didReceiveLocalNotification:(UILocalNotification *)localNotification 
withCompletion:(void(^)(WKUserNotificationInterfaceType))completionHandler

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

Вы также можете управлять удаленными уведомлениями через статический или динамический интерфейсы:

– (void)didReceiveRemoteNotification:(NSDictionary *)remoteNotification 
withCompletion:(void(^)(WKUserNotificationInterfaceType))completionHandler

7. Запускаем WatchKit эмулятор

Программа на Apple watch

Достаточно теории. Давайте запустим эмулятор и посмотрим, что у нас получилось. Измените целевое устройство в верхней части Xcode с WatchKit Catalog на WatchKit Catalog WatchKit App и нажмите кнопку Run. Вы увидите следующий экран.

Обратит е внимание, что в целевых устройствах вам также доступны Glance – WatchKit Catalog WatchKit App и Notification – WatchKit Catalog WatchKit App. Запустите свой проект в этих режимах и посмотрите, как работают glance и уведомления. Обратите внимание на Xcode консоль, где отображаются сообщения. Исследуйте с помощью консоли когда вызываются методы willActivate, didActivate и willDeactivate.

Источник thinkapps.com


Наши соцсети

Подписаться Facebook Подписаться Вконтакте Подписаться Twitter Подписаться Google Подписаться Telegram

Популярное

Ссылки

Новости [1] [2] [3]... Android/ iOS/ J2ME[1] [2] [3]) Android / Архив

Рейтинг@Mail.ru Яндекс.Метрика
MobiLab.ru © 2005-2018
При использовании материалов сайта ссылка на www.mobilab.ru обязательна