Сегодня мы рассмотрим пример создания простого мобильного приложения для умных часов 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, у кого отмечены оба таргета доступны и на часах и на телефоне.
Удобно использовать общие модели данных и методы получения данных для IOS и WatchOS приложений.
Но если у вас парное приложение для IOS + WatchOS, то компилироваться должны оба. В случае, если в IOS приложение добавляется что-то, что не работает на WatchOS, то IOS приложение работать тоже не будет, будет невозможно его сбилдить и запустить без исправления проблем в приложении WatchOS.
Можно создавать отдельные интерфейсы для WatchOS экранов или переиспользовать экраны с IOS приложения.
Если мы хотим переиспользовать интерфейсы, то можно использовать конструкции вида #if/else os для задания различных свойств вида для разных систем.
Например, чтобы задать высоту картинки
Можно заменять только некоторые экраны, используя одинаковые имена для видов чтобы не менять навигацию. Например, на IOS приложении у вас есть дерево навигации вида: ListView -> ListItem. Можно оставить ListView общим для обеих платформ, а ListItem создать отдельно для каждой платформы, сохраняя название. Тем самым навигацию построенную в ListView менять не нужно.
Особенности разработки под WatchOS
1. Отличия в интерфейсах
-
Маленький экран, мало места для контента и управляющих элементов
-
Поддерживается только темная тема и небольшие изменения для цвета элементов интерфейса
-
Многие стандартные элементы не поддерживаются или выглядят не так как мы привыкли их видеть на мобильном приложении. Например TabBar, ToolBar
ToolBar
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.