Автономные и неавтономные приложения Wear OS

Мы рекомендуем, чтобы приложения Wear OS работали независимо от телефона, чтобы пользователи могли выполнять задачи на часах без доступа к телефону Android или iOS. Если приложение для часов требует взаимодействия с телефоном, вы должны пометить приложение Wear OS как автономное и принять меры, чтобы гарантировать, что пользователю доступно приложение для телефона.

Планируйте свое приложение

Вы можете использовать Android App Bundle для автоматического создания оптимизированных пакетов Android Package Kits (APK) для конфигурации устройства каждого пользователя в одном списке приложений. Это позволяет пользователям загружать только тот код и ресурсы, которые им необходимы для запуска вашего приложения.

Информацию о настройке приложения для распространения через Google Play Store см. в разделе «Упаковка и распространение приложений Wear OS» и в руководстве по началу работы с пакетами приложений Android .

Для новых приложений целевой уровень API должен быть 30 или выше. Дополнительную информацию см. в статье «Соответствие целевому уровню API Google Play» . Установите для targetSdkVersion уровень API 30 (Wear OS 3), чтобы обеспечить правильную работу вашего приложения на последней версии платформы.

Информацию о сетевых запросах и доступе к сети с высокой пропускной способностью см. в разделе Доступ к сети и синхронизация на Wear OS .

Определите приложение как приложение Wear OS

Вы должны определить тег <uses-feature> в файле манифеста Android вашего приложения. Чтобы указать, что это приложение для часов, добавьте запись, подобную следующей:

  <manifest>
  ...
  <uses-feature android:name="android.hardware.type.watch" />
  ...
  </manifest>
  

Определите приложение как автономное или неавтономное.

Приложение для часов считается автономным или неавтономным:

  • Автономное приложение : полностью независимое приложение, для работы основных функций которого не требуется приложение для телефона. Хотя подсказки «Открыть на телефоне» приемлемы, приложение должно предоставлять пользователям альтернативные средства для выполнения функций приложения, например короткую ссылку или 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 :

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

Если ваше приложение для часов не является автономным и основные функции зависят от другого приложения, установите для параметра com.google.android.wearable.standalone значение false . Это означает, что приложению для часов требуется другое устройство, но это не влияет на продвижение вашего приложения в Google Play Store.

Примечание. Даже если значение com.google.android.wearable.standalone равно false , приложение для часов можно установить до установки приложения для телефона. Поэтому, если приложение для часов обнаружит , что на телефоне-компаньоне нет необходимого приложения для телефона, как описано на этой странице, предложите пользователю установить приложение для телефона.

Общий код и хранилище данных

Код может использоваться совместно приложением Wear OS и приложением для телефона. Например, общий код для работы в сети может находиться в общей библиотеке.

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

Вы можете использовать стандартные API-интерфейсы хранилища Android для локального хранения данных, как на телефоне. Например, вы можете использовать API-интерфейсы SharedPreferences или библиотеку сохранения комнаты .

Обнаружьте свое приложение на другом устройстве

Приложение для часов и соответствующее приложение для телефона могут определить, доступно ли другое приложение.

Приложения вашего телефона и часов могут использовать CapabilityClient , чтобы сообщать о своем присутствии сопряженному устройству. Они могут делать это статически или динамически.

Когда приложение находится на узле в сети Wear OS пользователя, например на телефоне, сопряженных часах или в облаке, CapabilityClient позволяет другим приложениям обнаружить его. Дополнительные сведения см. в разделе Возможности рекламы .

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

Вы должны проверить, доступен ли Play Store на устройстве, поскольку не все телефоны, например iPhone, поддерживают Play Store.

В следующих разделах описаны лучшие практики для двух сценариев:

  • Для автономного приложения для часов требуется приложение для телефона.
  • Вашему телефонному приложению требуется отдельное приложение для часов.

Вы также можете просмотреть образец помощников Datalayer , в котором показано, как использовать библиотеки помощников Datalayer , входящие в состав Horologies . Эти помощники позволяют отслеживать соединение между портативным устройством и устройством 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-адреса с часов

Приложение для часов может определить, есть ли на телефоне-компаньоне пользователя ваше приложение для телефона. Выполните следующие действия:

  1. Используйте CapabilityClient чтобы проверить, установлено ли приложение вашего телефона на сопряженном телефоне. Дополнительные сведения см. в примере помощников Datalayer на GitHub.
  2. Если приложение для телефона не установлено на телефоне, используйте метод PhoneDeviceType.getPhoneDeviceType() чтобы проверить тип телефона. Подробности смотрите в следующем разделе.
  3. Если возвращается PhoneDeviceType.DEVICE_TYPE_ANDROID , это телефон Android. Вызовите RemoteActivityHelper.startRemoteActivity() на устройстве Wear OS, чтобы открыть Play Store на телефоне. Используйте рыночный URI для своего приложения для телефона, который может отличаться от URI вашего приложения Wear. Например, используйте рыночный URI, например: market://details?id=com.example.android.wearable.wear.finddevices .
  4. Если возвращается 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 = PhoneDeviceType.getPhoneDeviceType(context)

Ява

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

Значение, возвращаемое методом getPhoneDeviceType() является одним из следующих:

Возвращаемое значение Описание
DEVICE_TYPE_ANDROID Телефон-компаньон — это устройство Android.
DEVICE_TYPE_IOS Телефон-компаньон — это устройство iOS.
DEVICE_TYPE_UNKNOWN Телефон-компаньон — неизвестное устройство.
DEVICE_TYPE_ERROR Произошла ошибка при определении типа сопряженного телефона; еще одну проверку следует провести позже.

Обнаружение приложений начиная с телефона Android

Ваш телефон Android может определить, есть ли на устройствах Wear OS пользователя ваше приложение для часов. Выполните следующие действия:

  1. С помощью NodeClient найдите все часы, подключенные к телефону пользователя. Дополнительные сведения см. в примере помощников Datalayer на GitHub.
  2. С помощью CapabilityClient проверьте, на каких часах пользователя установлено ваше приложение.
  3. Если ваше приложение не установлено на всех часах пользователя, разрешите пользователю открывать 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, описанных на этой странице.