Умные часы

Часть 2. Создание приложения для Apple Watch

https://ru.freepik.com/author/freepik
https://ru.freepik.com/author/freepik

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

Создание приложения для умных часов Apple

Приложения для часов Apple создаются на основе операционной системы watchOS. Для создания такого приложения необходимы стандартные средства разработки от Apple.

Само создание приложения для часов происходит также как создание обычного IOS приложения.

Открываем Xcode, выбираем в меню File->New->Project, выбираем вкладку watchOS->App

Умные часы

Далее указываем название приложения, является ли оно отдельно стоящим или связано с IOS приложением. Мы будем создавать связанное приложение. При создании приложения нужно указать его bundle identifier (идентификатор пакета). Bundle identifier приложения для часов будет заканчиваться .watchkitapp и создается автоматически после указания bundle identifier для связанного с ним приложения IOS. Если в дальнейшем понадобится изменить bundle identifier у приложения? нужно изменить его и у приложения часов (часть .watchkitapp остается неизменной всегда)

Например,Bundle ID для IOS приложения: e2e4.jaggaBox

Bundle ID для WatchOS приложения: e2e4.jaggaBox.watchkitapp

Умные часы

Интерфейсы WatchOS

Для создания интерфейсов IOS приложение есть два метода – использование StoryBoards и декларативные интерфейсы на SwiftUI. Для WatchOS, начиная watchOS 7 (2020 г) использование сторибордов устарело и поддерживается только SwiftUI

SwiftUI для WatchOS работает также как для IOS приложения с небольшими ограничениями.

Умные часы

Переиспользование данных с IOS приложения

Можно создавать как отдельно стоящее приложение для часов так и приложение в паре с приложением для телефона.

Если мы создаем приложение для часов в паре с IOS приложением то мы можем использовать модели данных и даже интерфейсы IOS приложения. Для этого у файла который вы хотите переиспользовать нужно отметить Target Membership и IOS и WatchOS

В нашем примере выше файлы которые имею Target Membership = jaggaBox ( IOS приложение) доступны только на IOS, те у которых Target Membership = jaggaBox Watch App (WatchOS приложение) доступны только на WatchOS, у кого отмечены оба таргета доступны и на часах и на телефоне.

На скриншоте показаны свойства файла ContentView.swift в File Inspector. Выбранные Target Membership показывают что файл доступен и на приложении IOS (jaggaBox) и на приложении WatchOS (jaggaBox Watch App)
На скриншоте показаны свойства файла ContentView.swift в File Inspector. Выбранные Target Membership показывают что файл доступен и на приложении IOS (jaggaBox) и на приложении WatchOS (jaggaBox Watch App)

Удобно использовать общие модели данных и методы получения данных для IOS и WatchOS приложений.

Но если у вас парное приложение для IOS + WatchOS, то компилироваться должны оба. В случае, если в IOS приложение добавляется что-то, что не работает на WatchOS, то IOS приложение работать тоже не будет, будет невозможно его сбилдить и запустить без исправления проблем в приложении WatchOS.

Можно создавать отдельные интерфейсы для WatchOS экранов или переиспользовать экраны с IOS приложения.

Если мы хотим переиспользовать интерфейсы, то можно использовать конструкции вида #if /else os для задания различных свойств вида для разных систем.

Например, чтобы задать высоту картинки

Умные часы

Можно заменять только некоторые экраны, используя одинаковые имена для видов чтобы не менять навигацию. Например, на IOS приложении у вас есть дерево навигации вида: ListView -> ListItem. Можно оставить ListView общим для обеих платформ, а ListItem создать отдельно для каждой платформы, сохраняя название. Тем самым навигацию построенную в ListView менять не нужно.

Особенности разработки под WatchOS

1. Отличия в интерфейсах

  • Маленький экран, мало места для контента и управляющих элементов
  • Поддерживается только темная тема и небольшие изменения для цвета элементов интерфейса
  • Многие стандартные элементы не поддерживаются или выглядят не так как мы привыкли их видеть на мобильном приложении. Например TabBar, ToolBar

ToolBar

Умные часы
Умные часы

TabBar

Умные часы
Умные часы

На экране часов иконки для переключения вкладок почти не видны, вкладки переключаются смахиванием экрана влево/вправо, нажатие на иконки вкладок не работает.

Alert

Умные часы
Умные часы

Стандартное сообщение на часах показывается на отдельном полноценном экране. Такое сообщение на экране телефона показывается в виде всплывающего попап окна поверх текущего.

Умные часы

2. Ограниченная поддержка библиотек

Многие сторонние библиотеки которые мы привыкли использовать на IOS не поддерживаются на WatchOS. Это может стать блокером. если вы хотите добавить своему приложению поддержку WatchOS. Например, на WatchOS не работает одна из распространенных библиотек для аналитики Firebase Analytics, а Firebase Crashlytics работает с ограничениями.

3. Возможности получения данных

Приложение часов может получать данные как напрямую из интернета или ICLoud так и со своего связанного приложения.

Watch Connectivity фреймворк позволяет отправлять данные с IOS приложения на связанное watchOS приложение.

Умные часы

Публикация приложения WatchOS

Публикация приложения для часов происходит по аналогии с приложениями для телефона.

Для публикации приложения для часов в AppStore нужно авторизоваться в App Store Connect (иметь при этом аккаунт разработчика) и создать приложение для платформы IOS. WatchOS приложения рассматриваются как часть платформы IOS. Далее нужно заполнить описание приложения, добавить скриншоты, подготовить и залить билд.

Для тестирования приложения на Apple Watch используется TestFlight, приложение установленное на связанный с часами телефон. Нужно создать билд (делается сразу и для часов и для телефона), залить его в App Store и отправить на тестирование в TestFlight. В TestFlight устанавливаем тестируемое приложения на телефон, при этом можно выбрать опцию “Показать приложение на Apple Watch” и оно появится на ваших часах.

Заключение

Мы рассмотрели некоторые из основных особенностей разработки приложений для умных часов Apple. Не смотря на то, что многие элементы инфраструктуры и принципы разработки IOS приложений можно использовать и для WatchOS, тем не менее стоит рассматривать приложения для часов как требующие отдельного изучения и специализированного подхода к разработке.

Надеемся эта статья будет полезна тем, кто хочет начать создавать приложения для Apple Watch.

22
Начать дискуссию