Watch App: ce este, dezvoltare pentru Apple Watch și Wear OS

Autor: IT Sectr Publicat: 2026-02-15 Timp de citire: 9 min

Watch App — aplicație pentru dispozitive purtabile: Apple Watch cu watchOS și ceasuri inteligente pe Wear OS de la Google. Spre deosebire de aplicațiile mobile, Watch App este optimizată pentru ecran mic (diagonală 1.5–2 inci), sesiuni scurte de interacțiune (5–15 secunde) și scenarii specifice — fitness, notificări, răspunsuri rapide, introducere vocală. Dezvoltarea se face în SwiftUI pentru Apple Watch și în Kotlin cu Jetpack Compose for Wear OS pentru Android. Vom examina conceptele cheie, arhitectura, navigarea și exemple de cod pentru ambele platforme.

Principalele puncte

  • Watch App — aplicație pentru ceasuri inteligente cu sesiuni scurte (5–15 secunde) și ecran limitat
  • Apple Watch folosește watchOS cu SwiftUI și WatchKit, navigare ierarhică strictă
  • Wear OS folosește Kotlin cu Jetpack Compose for Wear OS, Material You și navigare laterală
  • Autonomie — versiunile LTE ale ceasurilor permit aplicației să funcționeze fără conectare la smartphone
  • Senzori — accelerometru, giroscop, pulsmetru, GPS disponibile prin API native pe ambele platforme

Ce este Watch App

Watch App — este o aplicație concepută pentru a funcționa pe dispozitive purtabile: Apple Watch (watchOS) și ceasuri inteligente pe Wear OS. Diferența principală față de aplicația mobilă — factorul de formă. Ecranul ceasului are diagonala de 1.5–2 inci (față de 6–7 inci la smartphone), ceea ce limitează cantitatea de informații afișate simultan. Interacțiunea cu aplicația este scurtă — utilizatorul verifică ora, notificarea, pulsul sau pașii în 5–15 secunde, după care coboară mâna.

Scenarii cheie Watch App: tracker fitness (pași, puls, calorii, somn), notificări (mesaje, apeluri, calendar), acțiuni rapide (pornire cronometru, răspuns vocal la mesaj, control muzică), companion (telecomandă pentru cameră, chei mașină, plată NFC). Potrivit Counterpoint Research (2026), piața globală a ceasurilor inteligente depășește 150 de milioane de dispozitive pe an, din care Apple Watch ocupă 35%, Wear OS — 20%, restul — Fitbit, Garmin și altele.

Limitări Watch App: ecran mic (până la 2 inci), durată limitată de funcționare a bateriei (până la 18–24 ore), lipsa tastaturii complete (doar introducere vocală sau dictare), limită pentru sarcinile de fundal (watchOS — până la 10 minute, Wear OS — până la 5 minute), necesitatea sincronizării cu telefonul pentru majoritatea funcțiilor. Începând cu watchOS 6 (2019) și Wear OS 3 (2022) aplicațiile pot funcționa autonom prin modulul LTE fără asociere cu telefonul.

Apple Watch: watchOS și SwiftUI

watchOS — sistemul de operare Apple pentru ceasuri inteligente, bazat pe iOS și care utilizează aceleași framework-uri (Foundation, UIKit în versiune adaptată, SwiftUI). Dezvoltarea se face în Xcode în Swift. Principalul framework UI — SwiftUI, care oferă componente specifice watchOS: TabView cu carusel, NavigationStack, coroana digitală (Digital Crown) prin DigitalCrownModifier, meniu de apăsare lungă.

Navigarea pe watchOS se bazează pe paradigma ierarhică. Elemente principale: stivă ierarhică (NavigationStack cu revenire automată), prezentări modale (sheet), navigare pe pagini (page-based prin TabView cu .tabViewStyle(.page)), meniuri context la apăsare lungă. Digital Crown permite derularea conținutului și modificarea valorilor. Gesturi: atingere, apăsare lungă, glisare, Force Touch (până la watchOS 7), rotire Digital Crown.

Framework-uri cheie watchOS: HealthKit (acces la datele de sănătate — puls, pași, somn, EKG), CoreMotion (accelerometru, giroscop), WatchConnectivity (schimb de date cu iPhone), ClockKit (complicații pe cadran), BackgroundTasks (actualizări de fundal până la 10 minute), ARKit (FaceTime cu efecte pe Series 9+). Watch App poate fi complet (aplicație separată în dock) sau extensie (simultan cu versiunea iOS).

Wear OS: Kotlin și Compose

Wear OS — platforma Google pentru ceasuri inteligente, bazată pe Android. Dezvoltarea modernă se face în Kotlin cu Jetpack Compose for Wear OS — un set de componente optimizate pentru ecrane rotunde: Scaffold, ScalingLazyColumn, Chip, Button, Card, Stepper. Spre deosebire de Compose mobil, Wear OS folosește proprii modificatori: scrollable pentru derulare verticală, swipable pentru glisare, RotaryInput pentru controlul coroanei.

Navigarea pe Wear OS folosește panoul lateral (SwipeToDismiss) și ecrane-carte. Elemente principale: SwipeDismissableNavHost (navigare cu revenire prin glisare), poziționarea ecranelor (ScalingLazyColumn pentru liste), carusel orizontal (Carousel), cadran (WatchFace prin WatchFaceService). Google recomandă utilizarea glisării laterale pentru revenire și derularea verticală pentru liste. Butonul de alimentare de pe ceas deschide lista aplicațiilor recente.

Sănătate și senzori pe Wear OS: Health Services API (pași, puls, calorii, somn, SpO2 prin furnizori de date), SensorManager (accelerometru, giroscop, barometru, magnetometru), Location Services (GPS prin FusedLocationProvider). Wear OS 5+ suportă urmărirea alergării, mersului, ciclismului și înotului cu detectare automată a tipului de activitate. Datele se sincronizează cu Google Fit prin Health Connect.

Exemplu cod: Swift pentru Apple Watch

Să examinăm o aplicație de urmărire a pulsului pe Apple Watch folosind SwiftUI și HealthKit.

swift
import SwiftUI
import HealthKit

// Model de date pentru puls
struct HeartRateData: Identifiable {
    let id = UUID()
    let bpm: Double
    let date: Date
}

// ViewModel pentru 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)
    }
}

// Ecran principal
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)
    }
}

Puncte cheie: HKHealthStore solicită acces la datele HealthKit; HKObserverQuery notifică despre modificările pulsului în timp real; HKSampleQuery obține ultima valoare. Watch App actualizează automat UI la modificarea currentHeartRate datorită @Observable. HealthKit procesează datele local pe dispozitiv — nu sunt necesare cereri către server.

Exemplu cod: Kotlin pentru Wear OS

Aplicație similară pentru Wear OS în Kotlin cu Jetpack Compose și 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 pentru acces la senzori
        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 = "Puls",
                modifier = Modifier.size(40.dp),
                tint = MaterialTheme.colors.error
            )

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

Componente cheie Wear OS: Scaffold cu TimeText și Vignette pentru layout tipic; modificatorul .scrollable() pentru compatibilitate cu ecranul rotund; HealthService (Horologist) pentru acces la senzorii de puls. Jetpack Compose for Wear OS adaptează automat interfața pentru ecrane rotunde și pătrate — dezvoltatorul nu trebuie să gestioneze manual diferiți factori de formă.

Întrebări frecvente

Cu ce se deosebește Watch App de o aplicație mobilă?

Watch App are ecran limitat (diagonală 1.5–2 inci), funcționează pe baterie de capacitate mică și utilizează control prin gesturi. Interacțiunea este scurtă — 5–15 secunde, aplicația trebuie să fie cât mai concisă și să afișeze 1–2 indicatori cheie.

Ce limbaje se folosesc pentru Watch App?

Pentru Apple Watch — Swift cu framework-urile SwiftUI și WatchKit. Pentru Wear OS — Kotlin cu Jetpack Compose for Wear OS. Ambele platforme suportă abordarea declarativă pentru construirea interfețelor.

Poate Watch App să funcționeze fără iPhone?

Da, începând cu Apple Watch Series 3 cu LTE și watchOS 6+ aplicația poate funcționa autonom prin App Store pe ceas. Wear OS suportă și el versiuni LTE cu funcționare autonomă prin Google Play pe ceas.

Care sunt limitările Watch App?

Principalele limitări: dimensiunea ecranului (până la 2 inci), durată limitată de funcționare a bateriei (până la 18 ore), lipsa browserului și tastaturii complete, limită pentru sarcinile de fundal (watchOS — până la 10 minute, Wear OS — până la 5 minute).

Cum se accesează senzorii de pe ceas?

Pe Apple Watch se folosește HealthKit (HKHealthStore, HKSampleQuery) pentru puls, pași, somn și CoreMotion pentru accelerometru. Pe Wear OS — Health Services API (prin Horologist) pentru metrici de sănătate și SensorManager pentru date brute ale senzorilor.

Concluzii

  • Watch App — aplicație pentru ceasuri inteligente cu sesiuni de 5–15 secunde și ecran limitat până la 2 inci
  • Apple Watch folosește watchOS cu SwiftUI, NavigationStack, Digital Crown și HealthKit pentru acces la senzori
  • Wear OS folosește Kotlin cu Jetpack Compose for Wear OS, Scaffold, ScalingLazyColumn și Health Services API
  • Autonomie — modulul LTE permite aplicației să funcționeze fără conectare la smartphone pe ambele platforme
  • HealthKit pe watchOS și Health Services pe Wear OS oferă acces la puls, pași, somn și SpO2
  • Limitări — ecran mic, baterie 18–24 ore, limită sarcini de fundal, lipsa tastaturii
  • Scenarii principale — tracker fitness, notificări, răspunsuri rapide, telecomandă, plăți NFC

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și