Watch App: что это такое, разработка для Apple Watch и Wear OS

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

Watch App — приложение для носимых устройств: Apple Watch под управлением watchOS и смарт-часы на Wear OS от Google. В отличие от мобильных приложений, Watch App оптимизировано для маленького экрана (диагональ 1.5–2 дюйма), коротких сеансов взаимодействия (5–15 секунд) и специфичных сценариев — фитнес, уведомления, быстрые ответы, голосовой ввод. Разработка ведётся на SwiftUI для Apple Watch и на Kotlin с Jetpack Compose for Wear OS для Android. Рассмотрим ключевые концепции, архитектуру, навигацию и примеры кода для обеих платформ.

Главное

  • Watch App — приложение для умных часов с короткими сеансами (5–15 секунд) и ограниченным экраном
  • Apple Watch использует watchOS с SwiftUI и WatchKit, строгую иерархическую навигацию
  • Wear OS использует Kotlin с Jetpack Compose for Wear OS, Material You и боковую навигацию
  • Автономность — LTE-версии часов позволяют приложению работать без подключения к смартфону
  • Сенсоры — акселерометр, гироскоп, пульсометр, GPS доступны через нативные API на обеих платформах

Что такое Watch App

Watch App — это приложение, предназначенное для работы на носимых устройствах: Apple Watch (watchOS) и смарт-часах на Wear OS. Основное отличие от мобильного приложения — форма фактора. Экран часов имеет диагональ 1.5–2 дюйма (против 6–7 дюймов у смартфона), что ограничивает количество одновременно отображаемой информации. Взаимодействие с приложением короткое — пользователь проверяет время, уведомление, пульс или шаги за 5–15 секунд, после чего опускает руку.

Ключевые сценарии Watch App: фитнес-трекер (шаги, пульс, калории, сон), уведомления (сообщения, звонки, календарь), быстрые действия (запуск таймера, ответ на сообщение голосом, управление музыкой), компаньон (пульт для камеры, ключи от машины, оплата NFC). По данным Counterpoint Research (2026), глобальный рынок умных часов превышает 150 млн устройств в год, из которых Apple Watch занимает 35%, Wear OS — 20%, остальное — Fitbit, Garmin и другие.

Ограничения Watch App: маленький экран (до 2 дюймов), ограниченное время работы от батареи (до 18–24 часов), отсутствие полноценной клавиатуры (только голосовой ввод или диктовка), лимит на фоновые задачи (watchOS — до 10 минут, Wear OS — до 5 минут), необходимость синхронизации с телефоном для большинства функций. Начиная с watchOS 6 (2019) и Wear OS 3 (2022) приложения могут работать автономно через LTE-модуль без пары с телефоном.

Apple Watch: watchOS и SwiftUI

watchOS — операционная система Apple для умных часов, базирующаяся на iOS и использующая те же фреймворки (Foundation, UIKit в адаптированной версии, SwiftUI). Разработка ведётся в Xcode на Swift. Основной UI-фреймворк — SwiftUI, который предоставляет watchOS-специфичные компоненты: TabView с каруселью, NavigationStack, цифровую корону (Digital Crown) через DigitalCrownModifier, меню долгого нажатия.

Навигация на watchOS строится на иерархической парадигме. Основные элементы: иерархический стек (NavigationStack с автоматическим возвратом), модальные презентации (sheet), страничная навигация (page-based через TabView с .tabViewStyle(.page)), контекстные меню при долгом нажатии. Digital Crown позволяет скроллить контент и изменять значения. Жесты: тап, долгое нажатие, смахивание, Force Touch (до watchOS 7), поворот Digital Crown.

Ключевые фреймворки watchOS: HealthKit (доступ к данным здоровья — пульс, шаги, сон, ЭКГ), CoreMotion (акселерометр, гироскоп), WatchConnectivity (обмен данными с iPhone), ClockKit (компликации на циферблат), BackgroundTasks (фоновые обновления до 10 минут), ARKit (FaceTime с эффектами на Series 9+). Watch App может быть полноценным (отдельное приложение в доке) или расширением (одновременно с iOS-версией).

Wear OS: Kotlin и Compose

Wear OS — платформа Google для умных часов, основанная на Android. Современная разработка ведётся на Kotlin с Jetpack Compose for Wear OS — набором компонентов, оптимизированных для круглых экранов: Scaffold, ScalingLazyColumn, Chip, Button, Card, Stepper. В отличие от мобильного Compose, Wear OS использует собственные модификаторы: scrollable для вертикального скролла, swipable для смахивания, RotaryInput для управления заводной головкой.

Навигация на Wear OS использует боковую панель (SwipeToDismiss) и экраны-карточки. Основные элементы: SwipeDismissableNavHost (навигация с возвратом смахиванием), позиционирование экранов (ScalingLazyColumn для списков), горизонтальная карусель (Carousel), циферблат (WatchFace через WatchFaceService). Google рекомендует использовать боковое смахивание для возврата и вертикальный скролл для списков. Кнопка питания на часах открывает список последних приложений.

Здоровье и сенсоры на Wear OS: Health Services API (шаги, пульс, калории, сон, SpO2 через поставщиков данных), SensorManager (акселерометр, гироскоп, барометр, магнитометр), Location Services (GPS через FusedLocationProvider). Wear OS 5+ поддерживает отслеживание бега, ходьбы, езды на велосипеде и плавания с автоматическим определением типа активности. Данные синхронизируются с Google Fit через Health Connect.

Пример кода: Swift для Apple Watch

Рассмотрим приложение для отслеживания пульса на Apple Watch с использованием SwiftUI и HealthKit.

swift
import SwiftUI
import HealthKit

// Модель данных для пульса
struct HeartRateData: Identifiable {
    let id = UUID()
    let bpm: Double
    let date: Date
}

// ViewModel для HealthKit
@Observable
final class HealthViewModel {
    private let healthStore = HKHealthStore()
    var currentHeartRate: Double = 0
    var isAuthorized: Bool = false

    func requestAuthorization() {
        guard let heartRateType = HKQuantityType.quantityType(forIdentifier: .heartRate)
        else { return }
        let types = Set([heartRateType])
        healthStore.requestAuthorization(toShare: nil, read: types) { success, _ in
            Task { @MainActor in
                self.isAuthorized = success
                if success { self.startHeartRateQuery() }
            }
        }
    }

    func startHeartRateQuery() {
        guard let heartRateType = HKQuantityType.quantityType(forIdentifier: .heartRate)
        else { return }
        let query = HKObserverQuery(
            sampleType: heartRateType, predicate: nil
        ) { [weak self] _, _, _ in
            self?.fetchLatestHeartRate()
        }
        healthStore.execute(query)
    }

    private func fetchLatestHeartRate() {
        guard let heartRateType = HKQuantityType.quantityType(forIdentifier: .heartRate)
        else { return }
        let sort = NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: false)
        let query = HKSampleQuery(
            sampleType: heartRateType, predicate: nil,
            limit: 1, sortDescriptors: [sort]
        ) { _, samples, _ in
            guard let sample = samples?.first as? HKQuantitySample else { return }
            let bpm = sample.quantity.doubleValue(for: HKUnit.count().unitDivided(by: .minute()))
            Task { @MainActor in
                self.currentHeartRate = bpm
            }
        }
        healthStore.execute(query)
    }
}

// Основной экран
struct HeartRateView: View {
    @State private var viewModel = HealthViewModel()

    var body: some View {
        VStack {
            Image(systemName: "heart.fill")
                .foregroundColor(.red)
                .font(.largeTitle)

            Text("\(Int(viewModel.currentHeartRate))")
                .font(.system(size: 60, weight: .bold, design: .rounded))
                .foregroundColor(.red)

            Text("BPM")
                .font(.caption)
                .foregroundColor(.secondary)
        }
        .padding()
        .onAppear(perform: viewModel.requestAuthorization)
    }
}

Ключевые моменты: HKHealthStore запрашивает доступ к данным HealthKit; HKObserverQuery уведомляет об изменениях пульса в реальном времени; HKSampleQuery получает последнее значение. Watch App автоматически обновляет UI при изменении currentHeartRate благодаря @Observable. HealthKit обрабатывает данные локально на устройстве — запросы к серверу не требуются.

Пример кода: Kotlin для Wear OS

Аналогичное приложение для Wear OS на Kotlin с Jetpack Compose и Health Services API.

kotlin
// MainActivity.kt
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.wear.compose.material.*
import androidx.wear.compose.foundation.arc.BasicArcParams
import com.google.android.horologist.health.HealthService

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            WearAppTheme {
                HeartRateScreen()
            }
        }
    }
}

@Composable
fun HeartRateScreen() {
    var heartRate by remember { mutableIntStateOf(0) }
    var isConnected by remember { mutableStateOf(false) }

    LaunchedEffect(Unit) {
        // HealthService — API для доступа к датчикам
        val healthService = HealthService()
        healthService.connect().onSuccess {
            isConnected = true
        }
    }

    Scaffold(
        timeText = { TimeText() },
        vignette = { Vignette(vignettePosition = VignettePosition.TopAndBottom) }
    ) {
        Column(
            modifier = Modifier
                .fillMaxSize()
                .scrollable(state = ScrollState),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ) {
            Icon(
                imageVector = Icons.Filled.Favorite,
                contentDescription = "Пульс",
                modifier = Modifier.size(40.dp),
                tint = MaterialTheme.colors.error
            )

            Text(
                text = heartRate.toString(),
                style = MaterialTheme.typography.display1
            )
            Text(
                text = "BPM",
                style = MaterialTheme.typography.caption2
            )
        }
    }
}

Ключевые компоненты Wear OS: Scaffold с TimeText и Vignette для типового макета; .scrollable() модификатор для совместимости с круглым экраном; HealthService (Horologist) для доступа к датчикам пульса. Jetpack Compose for Wear OS автоматически адаптирует интерфейс под круглые и квадратные экраны — разработчику не нужно обрабатывать разные форм-факторы вручную.

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

Чем Watch App отличается от мобильного приложения?

Watch App имеет ограниченный экран (диагональ 1.5–2 дюйма), работает от аккумулятора малой ёмкости и использует управление жестами. Взаимодействие короткое — 5–15 секунд, приложение должно быть максимально лаконичным и отображать 1–2 ключевых показателя.

Какие языки используются для Watch App?

Для Apple Watch — Swift с фреймворками SwiftUI и WatchKit. Для Wear OS — Kotlin с Jetpack Compose for Wear OS. Обе платформы поддерживают декларативный подход к построению интерфейсов.

Может ли Watch App работать без iPhone?

Да, начиная с Apple Watch Series 3 с LTE и watchOS 6+ приложение может работать автономно через App Store на часах. Wear OS также поддерживает LTE-версии с автономной работой через Google Play на часах.

Какие ограничения у Watch App?

Основные ограничения: размер экрана (до 2 дюймов), ограниченное время автономной работы (до 18 часов), отсутствие полноценного браузера и клавиатуры, лимит на фоновые задачи (watchOS — до 10 минут, Wear OS — до 5 минут).

Как получить доступ к датчикам на часах?

На Apple Watch используется HealthKit (HKHealthStore, HKSampleQuery) для пульса, шагов, сна и CoreMotion для акселерометра. На Wear OS — Health Services API (через Horologist) для метрик здоровья и SensorManager для сырых данных сенсоров.

Итоги

  • Watch App — приложение для умных часов с сеансами 5–15 секунд и ограниченным экраном до 2 дюймов
  • Apple Watch использует watchOS со SwiftUI, NavigationStack, Digital Crown и HealthKit для доступа к датчикам
  • Wear OS использует Kotlin с Jetpack Compose for Wear OS, Scaffold, ScalingLazyColumn и Health Services API
  • Автономность — модуль LTE позволяет приложению работать без привязки к смартфону на обеих платформах
  • HealthKit на watchOS и Health Services на Wear OS предоставляют доступ к пульсу, шагам, сну и SpO2
  • Ограничения — маленький экран, батарея 18–24 часа, лимит фоновых задач, отсутствие клавиатуры
  • Основные сценарии — фитнес-трекер, уведомления, быстрые ответы, пульт управления, NFC-платежи

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

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

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

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