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 за типичен layout; модификатор .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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също