Мы рекомендуем, чтобы приложения Wear OS работали независимо от телефона, чтобы пользователи могли выполнять задачи на часах без доступа к телефону Android или iOS. Если ваше приложение для часов требует взаимодействия с телефоном, необходимо пометить приложение Wear OS как неавтономное и принять меры для обеспечения доступности мобильного приложения для пользователя.
Спланируйте свое приложение
С помощью Android App Bundle вы можете автоматически генерировать оптимизированные APK-файлы (пакеты расширения) для каждой конфигурации устройства пользователя в рамках одного и того же приложения. Это позволяет пользователям загружать только тот код и ресурсы, которые им необходимы для запуска вашего приложения.
Информацию о настройке вашего приложения для распространения через Google Play Store см. в разделах «Упаковка и распространение приложений Wear OS» и «Руководство по началу работы с пакетами приложений Android» .
Для новых приложений целевой уровень API должен быть 30 или выше. Дополнительную информацию см. в разделе «Соответствие требованиям Google Play к целевому уровню API» . Установите targetSdkVersion на уровень API 30 (Wear OS 3), чтобы обеспечить корректную работу вашего приложения на последней версии платформы.
Для получения информации о сетевых запросах и высокоскоростном сетевом доступе см. раздел «Сетевой доступ и синхронизация в Wear OS» .
Определите приложение как приложение для Wear OS.
Необходимо определить тег <uses-feature> в файле манифеста Android вашего приложения. Чтобы указать, что это приложение для Apple Watch, добавьте запись следующего вида:
<uses-feature android:name="android.hardware.type.watch" />
Определите, является ли приложение автономным или неавтономным.
Приложение для часов делится на автономное и неавтономное:
- Автономное приложение : полностью независимое приложение, для основных функций которого не требуется приложение на телефоне. Хотя подсказки типа «Открыть на телефоне» допустимы, приложение должно предоставлять пользователям альтернативные способы выполнения функций приложения — например, короткую ссылку или QR-код — без зависимости от подключенного телефона.
- Неавтономное приложение: зависимое приложение, для основных функций которого требуется приложение на телефоне или другом устройстве. Этот вариант лучше всего подходит для приложений, которые не могут легко предоставить альтернативный способ — например, QR-код или короткую ссылку — для выполнения основной функции приложения, такой как аутентификация.
Примечание: Даже для неавтономных приложений пользователи могут установить приложение Wear OS перед мобильным приложением. Поэтому, если ваше приложение Wear OS обнаружит, что на находящемся рядом портативном устройстве отсутствует необходимое сопутствующее приложение, предложите пользователю установить сопутствующее приложение.
Google проверяет правильность статуса автономного приложения во время его показа. Это значение влияет на видимость приложений в Play Store на устройствах, не подключенных к сети, таких как устройства Wear OS, не сопряженные с портативными устройствами. Неавтономные приложения, а также приложения, которые разработчики ошибочно обозначают как «автономные», недоступны пользователям на таких устройствах.
В вашем приложении для Wear OS установите значение элемента meta-data com.google.android.wearable.standalone в файле манифеста Android, чтобы указать, является ли ваше приложение автономным или неавтономным.
Если ваше приложение для часов является полностью независимым, автономным приложением, укажите это в магазине Google Play, установив значение параметра com.google.android.wearable.standalone равным true :
<meta-data android:name="com.google.android.wearable.standalone" android:value="true" />
Если ваше приложение для часов не является автономным и зависит от другого приложения для основных функций, установите значение параметра com.google.android.wearable.standalone в false . Это означает, что приложению для часов требуется другое устройство, но не повлияет на продвижение вашего приложения в Google Play Store.
Примечание: Даже если значение параметра com.google.android.wearable.standalone равно false , приложение для часов может быть установлено до установки приложения для телефона. Поэтому, если ваше приложение для часов обнаружит , что на сопутствующем телефоне отсутствует необходимое приложение, как описано на этой странице, предложите пользователю установить приложение для телефона.
Общее хранилище кода и данных
Код может использоваться совместно приложением для Wear OS и приложением для телефона. Например, общий код для работы с сетью может находиться в общей библиотеке.
При желании код, специфичный для определенного форм-фактора, может быть размещен в отдельном модуле.
Для локального хранения данных, как на телефоне, можно использовать стандартные API хранилища Android. Например, можно использовать API SharedPreferences или библиотеку сохранения данных Room .
Обнаружение вашего приложения на другом устройстве
Приложение для ваших часов и соответствующее приложение для телефона могут определять, доступно ли другое приложение.
Приложения для телефонов и часов могут использовать CapabilityClient для оповещения о своем присутствии на сопряженном устройстве. Это можно делать статически или динамически.
Когда приложение находится на узле в сети Wear OS пользователя, например, на телефоне, сопряженных часах или в облаке, CapabilityClient позволяет другим приложениям его обнаружить. Для получения дополнительной информации см. раздел «Реклама возможностей» .
Если одно из ваших приложений не может обнаружить другое, вы можете предложить пользователю открыть его в Play Store на проблемном устройстве. Это решение подходит для приложений для часов, которым для корректной работы необходимо наличие сопутствующего приложения на телефоне.
Необходимо проверить наличие магазина приложений Play Store на устройстве, поскольку не все телефоны, например iPhone, поддерживают Play Store.
В следующих разделах описаны лучшие практики для двух сценариев:
- Для работы автономного приложения для часов необходимо приложение для телефона.
- Вашему мобильному приложению необходимо отдельное приложение для часов.
Вы также можете ознакомиться с примером вспомогательных функций Datalayer , демонстрирующим использование библиотек вспомогательных функций Datalayer , входящих в состав Horologist . Эти вспомогательные функции позволяют отслеживать соединение между портативным устройством и устройством Wear OS. Для получения дополнительной информации о классах, описанных в следующем разделе, см. справочник API Wear OS . В этом справочнике также содержится информация о классе PhoneTypeHelper , который содержит метод getPhoneDeviceType() , позволяющий вашему приложению Wear OS проверять, является ли сопутствующий телефон устройством Android или iOS.
Укажите имена возможностей для обнаружения ваших приложений.
Для каждого типа устройства (часы или телефон) в приложении укажите уникальную строку в качестве имени возможности в файле res/values/wear.xml .
Например, в вашем мобильном модуле файл wear.xml может содержать следующее:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_phone_app</item> </string-array> </resources>
В модуле Wear OS файл wear.xml содержит другое значение для имени возможности, например, следующее:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_wear_app</item> </string-array> </resources>
Для получения более подробной информации см. раздел «Возможности рекламы» .
Обнаружение приложений и открытие URL-адреса с часов
Приложение для ваших часов может определить, установлено ли ваше приложение на телефоне пользователя. Выполните следующие шаги:
- Используйте
CapabilityClient, чтобы проверить, установлено ли ваше мобильное приложение на сопряженном телефоне. Для получения дополнительной информации см. пример вспомогательных функций Datalayer на GitHub. - Если ваше приложение не установлено на телефоне, используйте метод
PhoneDeviceType.getPhoneDeviceType()для проверки типа телефона. Подробности см. в следующем разделе. - Если возвращается значение
PhoneDeviceType.DEVICE_TYPE_ANDROID, значит, это телефон на Android. ВызовитеRemoteActivityHelper.startRemoteActivity()на устройстве Wear OS, чтобы открыть Play Store на телефоне. Используйте URI магазина приложений для вашего приложения на телефоне, который может отличаться от URI вашего приложения на Wear OS. Например, используйте URI магазина приложений, такой как:market://details?id=com.example.android.wearable.wear.finddevices. Если возвращается значение
PhoneDeviceType.DEVICE_TYPE_IOS, это означает, что телефон является iOS-устройством, и Play Store недоступен. Откройте App Store на iPhone, вызвавRemoteActivityHelper.startRemoteActivity()на устройстве Wear OS. Вы можете указать URL-адрес вашего приложения в iTunes, например,https://itunes.apple.com/us/app/yourappname.В Wear OS невозможно программно определить, установлено ли ваше мобильное приложение на устройстве iOS. В качестве оптимальной практики следует предоставить пользователю возможность вручную запустить открытие App Store.
Примечание : Используйте описанный ранее API RemoteActivityHelper , чтобы указать, что любой URL-адрес должен открываться на телефоне с помощью часов, и что мобильное приложение не требуется.
Подробная информация для определения типа сопряженного телефона.
Вот фрагмент кода, в котором используется метод getPhoneDeviceType() для проверки типа телефона, к которому сопряжены часы:
var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)
Метод getPhoneDeviceType() возвращает одно из следующих значений:
| Возвращаемое значение | Описание |
|---|---|
DEVICE_TYPE_ANDROID | В качестве дополнительного телефона используется устройство на базе Android. |
DEVICE_TYPE_IOS | В качестве сопутствующего телефона используется устройство на базе iOS. |
DEVICE_TYPE_UNKNOWN | Вспомогательный телефон — это неизвестное устройство. |
DEVICE_TYPE_ERROR | Произошла ошибка при определении типа сопряженного телефона; следует провести повторную проверку позже. |
Обнаружение приложений на телефоне Android.
Ваш Android-телефон может определить, установлено ли на устройствах Wear OS пользователя ваше приложение для часов. Выполните следующие шаги:
- С помощью
NodeClientнайдите все часы, подключенные к телефону пользователя. Для получения дополнительной информации см. пример вспомогательных функций Datalayer на GitHub. - С помощью
CapabilityClientпроверьте, на каких часах пользователя установлено ваше приложение. - Если ваше приложение не установлено на всех часах пользователя, позвольте пользователю открыть Play Store на оставшихся устройствах Wear OS с телефона, используя метод
RemoteActivityHelper.startRemoteActivity(). Используйте URI магазина приложений для приложения Wear OS, который может отличаться от URI вашего приложения на телефоне. Например, используйте URI магазина приложений, такой как:market://details?id=com.example.android.wearable.wear.finddevices.
Данные о местоположении для часов, сопряженных с iPhone.
Для часов, сопряженных с iPhone, используйте Fused Location Provider (FLP) для получения данных о местоположении на часах. Дополнительную информацию см. в разделе «Определение местоположения в Wear OS» .
Если дополнительный телефон доступен, FLP использует его для получения данных о местоположении.
Получайте только необходимые данные.
Как правило, при получении данных из интернета следует брать только необходимую информацию. В противном случае это может привести к ненужным задержкам, использованию памяти и расходу заряда батареи.
При подключении часов через Bluetooth LE ваше приложение может иметь доступ к пропускной способности всего 4 килобайта в секунду, в зависимости от модели часов. Поэтому рекомендуется выполнить следующие шаги:
- Проведите аудит сетевых запросов и ответов на предмет наличия дополнительных данных, необходимых только для мобильного приложения.
- Перед отправкой больших изображений по сети на часы, пожалуйста, уменьшите их размер.
В случаях, когда необходима высокоскоростная сеть, см. раздел «Доступ к высокоскоростной сети» .
Дополнительные примеры кода
Пример вспомогательных функций Datalayer дополнительно демонстрирует использование API, описанных на этой странице.