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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

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