Companion App — что это такое, разработка приложений-компаньонов

Автор: IT Sectr Опубликовано: 2026-02-16 Время чтения: 9 мин

Companion App — приложение-компаньон для носимых устройств Apple Watch и Wear OS, работающее в паре с основным приложением на смартфоне. Companion App синхронизирует данные через WatchConnectivity (iOS) или Wearable Data Layer (Android), отображает уведомления на часах и может выполнять функции автономно. Разработка ведётся на Swift для watchOS и Kotlin для Wear OS. Подробнее — на WatchConnectivity Docs.

Главное

  • Companion App — приложение для wearable, работающее с основным приложением на телефоне
  • WatchConnectivity — фреймворк для обмена данными между iPhone и Apple Watch
  • Wearable Data Layer — API для синхронизации Android-приложения с Wear OS
  • Автономная работа — часы кэшируют данные и работают без подключения к телефону
  • Push-уведомления — companion отображает уведомления с телефона на запястье

Что такое Companion App — приложение для wearable?

Companion App — приложение для носимых устройств Apple Watch или Wear OS, которое поставляется в паре с основным iOS или Android приложением. Основная цель — расширение функциональности на запястье: быстрый просмотр информации, ответ на сообщения, управление музыкой, отслеживание тренировок. Companion App автоматически устанавливается на часы при установке основного приложения на телефон, если разработчик включил его в билд.

Архитектура companion приложения включает два компонента: iOS/Android приложение (главное) и watchOS/Wear OS приложение (компаньон). Связь между ними осуществляется через системные API: WatchConnectivity для Apple и Wearable Data Layer для Google. Данные передаются в фоне по Bluetooth или Wi-Fi — пользователь не видит процесса синхронизации. Приложение на часах может иметь собственный UI, отличный от мобильного, адаптированный под маленький экран.

Типы companion приложений различаются по степени зависимости от телефона. Mirroring-приложения отображают копию данных с телефона и не работают без подключения. Decoupled-приложения имеют собственную логику, кэшируют данные и сохраняют часть функциональности при отключении от телефона. Independent-приложения (watchOS 6+ и Wear OS 3+) могут устанавливаться без телефона и работать полностью автономно с собственным сетевым доступом.

WatchConnectivity: синхронизация iPhone и Apple Watch

WatchConnectivity — фреймворк Apple для двусторонней коммуникации между iPhone и Apple Watch. Предоставляет четыре механизма передачи данных: Application Context (последнее известное состояние), File Transfer (файлы любого размера), User Info (словари с гарантированной доставкой) и Interactive Messaging (двусторонняя связь в реальном времени). Система выбирает Bluetooth или Wi-Fi автоматически в зависимости от расстояния и качества сигнала.

swift
import WatchConnectivity

class PhoneSessionManager: NSObject, WCSessionDelegate {
    func activateSession() {
        WCSession.default.delegate = self
        WCSession.default.activate()
    }
    func sendWorkoutData(_ data: WorkoutData) {
        let dict = ["heartRate": data.heartRate,
                     "calories": data.calories] as [String: Any]
        WCSession.default.transferUserInfo(dict)
    }
    func session(_: WCSession,
               didReceiveUserInfo: [String: Any]) {
        DispatchQueue.main.async {
            NotificationCenter.default.post(
                name: .workoutDataReceived,
                object: didReceiveUserInfo)
        }
    }
}

Interactive Messaging — единственный механизм WatchConnectivity с гарантированной доставкой в реальном времени. Сообщение отправляется и получает ответ в течение 200–500 мс при условии активного соединения. Используется для действий, требующих немедленного ответа: запуск тренировки, подтверждение платежа, открытие двери умного дома. Сессия должна быть активна на обоих устройствах — если часы заблокированы или приложение в фоне, доставка не гарантируется.

File Transfer API предназначен для больших объёмов данных — изображений, аудиофайлов, экспортированных тренировок. Файлы передаются в фоне даже при закрытом приложении. Ограничение — до 10 одновременных передач в очереди. Application Context — самый экономичный механизм: передаёт только последнее состояние, отменяя предыдущие неотправленные контексты. Идеален для синхронизации настроек и текущего статуса.

Wearable Data Layer: синхронизация Android и Wear OS

Wearable Data Layer — API из Google Play Services для синхронизации данных между Android-устройством и Wear OS-часами. Предоставляет три протокола: DataItem (синхронизация пар ключ-значение), MessageClient (однонаправленные сообщения) и ChannelClient (потоковая передача данных). DataItems синхронизируются автоматически через Google Cloud — если телефон недоступен, данные доставляются при восстановлении соединения.

kotlin
class WearableSyncService : WearableListenerService() {
    override fun onDataChanged(dataEvents: DataEventBuffer) {
        dataEvents.forEach { event ->
            when (event.type) {
                DataEvent.TYPE_CHANGED -> {
                    val uri = event.dataItem.uri
                    val path = uri.path // /workout/heartrate
                    val data = DataMapItem
                        .fromDataItem(event.dataItem)
                        .dataMap
                    val bpm = data.getInt("bpm")
                    updateUI(bpm)
                }
            }
        }
    }
}

MessageClient — отправляет однонаправленные сообщения с путём и байтовым массивом. Используется для команд: «Запустить тренировку», «Приостановить музыку». Сообщение доставляется гарантированно, если устройство подключено. Для получения сообщения на Wear OS реализуйте WearableListenerService и зарегистрируйте его в манифесте. MessageClient не поддерживает автоматическое кэширование — если часы отключены, сообщение теряется.

ChannelClient — протокол для потоковых данных: аудио, видео, непрерывный поток сенсоров. Открывает двусторонний канал, по которому передаются байтовые массивы. Поддерживается только на Wear OS 2.0+. ChannelClient полезен для передачи аудио с телефона на часы для звонков через Bluetooth и для ретрансляции данных с внешних Bluetooth-сенсоров (пульсометр, велокомпьютер) через телефон на часы.

Автономная работа companion приложения на часах

Автономная работа — способность companion приложения выполнять функции без подключения к телефону. На watchOS с Cellular-модулем приложение отправляет сетевые запросы напрямую через eSIM. На Wear OS с LTE доступна аналогичная функциональность. Даже без cellular модуля часы кэшируют последние данные с телефона и показывают их при отключении — пользователь видит актуальную на момент последней синхронизации информацию.

РежимДанныеДоступностьПример
OnlineЖивые с сервера/телефонаПолнаяМаршрут навигации
CachedПоследние с телефонаОграниченнаяСписок контактов
OfflineЛокальные на часахМинимальнаяТаймер, секундомер

Кэширование данных — ключевой элемент автономной работы. Приложение должно сохранять последнее полученное состояние в локальное хранилище часов. На watchOS используется UserDefaults или CoreData, на Wear OS — Room Database или DataStore. При восстановлении соединения кэш обновляется фоновой синхронизацией. Если данные устарели более чем на 24 часа, приложение показывает заглушку «Обновите подключение к телефону».

Wearable UI для ограниченного экрана часы имеют экран 1.5–2 дюйма — интерфейс companion приложения должен быть максимально лаконичным. Apple рекомендует NavigationView с одной колонкой на watchOS, Google — список карточек на Wear OS с взмахом для навигации. Кнопки должны быть размером не менее 44pt для комфортного касания. Избегайте текстовых полей ввода — используйте готовые ответы, диктовку или скроллинг-колёсико Digital Crown.

Energy-efficient дизайн — companion приложение не должно разряжать часы за несколько часов. Используйте фоновые обновления с минимальным интервалом. На watchOS WatchConnectivity приостанавливает передачу при низком заряде батареи и возобновляет после зарядки. На Wear OS Wearable Data Layer автоматически группирует мелкие передачи в одну для экономии энергии. Wrist raise — обновляйте UI только при поднятии запястья пользователем.

Лучшие практики разработки companion приложений

Архитектура companion приложения должна быть спроектирована с учётом возможной потери связи. Используйте паттерн Repository: единый источник данных на телефоне синхронизируется с локальным репозиторием на часах. ViewModel на часах подписывается на локальный репозиторий и отображает данные независимо от состояния соединения. При восстановлении связи Repository на часах запрашивает данные через WatchConnectivity или Wearable Data Layer и обновляет локальное хранилище.

kotlin
class WorkoutRepository constructor(
    private val localStorage: WorkoutDao,
    private val wearableClient: WearableClient
) {
    val workoutFlow: Flow<Workout?> = merge(
        localStorage.observeWorkout(),
        wearableClient.observeWorkout()
            .onEach { localStorage.save(it) }
    )
}

Тестирование companion приложения требует проверки на реальных часах или эмуляторе. Xcode поддерживает симулятор Apple Watch в паре с симулятором iPhone — можно тестировать WatchConnectivity без физических устройств. Android Studio включает эмулятор Wear OS с поддержкой Wearable Data Layer. Критические тест-кейсы: потеря соединения во время передачи, низкий заряд батареи, одновременная работа двух companion приложений и установка без телефона на standalone-часах.

Публикация companion приложения на watchOS не требует отдельной загрузки в App Store — приложение входит в бинар iOS-приложения и автоматически предлагается к установке на часы. На Wear OS companion приложение публикуется отдельно в Google Play, но связывается с основным приложением через тот же пакет. App Group на iOS и sharedUserId на Android позволяют основному и companion приложению использовать общее хранилище данных.

Часто задаваемые вопросы

Чем Companion App отличается от обычного приложения на часах?

Companion App требует установленного основного приложения на iPhone или Android для полной функциональности. Обычное standalone-приложение на часах (например, компас или секундомер) работает автономно без телефона. Companion App синхронизирует данные с телефоном, отображает уведомления и позволяет выполнять быстрые действия, но без телефона теряет часть функций.

Как WatchConnectivity передаёт данные между iPhone и Watch?

WatchConnectivity поддерживает четыре режима: Application Context для передачи текущего состояния с отменой предыдущего, File Transfer для файлов любого размера, User Info для словарей данных с гарантированной доставкой и Interactive Messaging для двусторонней связи в реальном времени. Данные передаются по Bluetooth или Wi-Fi — система выбирает оптимальный канал автоматически.

Может ли Companion App работать без интернета?

Да, companion приложение работает автономно — watchOS и Wear OS кэшируют данные, полученные от телефона. На часах с сотовым модулем приложение отправляет запросы напрямую через eSIM или LTE. Кэшированные данные отображаются даже при отсутствии подключения. При восстановлении соединения кэш обновляется фоновой синхронизацией.

Какие типы приложений чаще всего используют Companion App?

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

Сколько энергии потребляет Companion App на часах?

Apple Watch обеспечивает до 18 часов работы с активным companion приложением при стандартном использовании. Wear OS — до 24 часов. WatchConnectivity оптимизирован для низкого энергопотребления: передача данных приостанавливается при низком заряде батареи, а массовая синхронизация выполняется во время зарядки часов.

Итоги

  • Companion App — приложение для часов, работающее в паре с основным приложением на телефоне
  • WatchConnectivity — фреймворк iOS с четырьмя режимами передачи данных на Apple Watch
  • Wearable Data Layer — API Android для синхронизации с Wear OS через DataItem и MessageClient
  • Автономная работа — кэширование данных позволяет работать при отключении от телефона
  • Энергопотребление — до 18 часов работы на Apple Watch, до 24 часов на Wear OS
  • UI для часов — лаконичный интерфейс с крупными элементами и минимальным текстом
  • Публикация — watchOS входит в бинар iOS, Wear OS публикуется отдельно в Google Play

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также