Watch App — geyilən cihazlar üçün proqram: watchOS idarə olunan Apple Watch və Google-un Wear OS smart saatları. Mobil proqramlardan fərqli olaraq, Watch App kiçik ekran (diametr 1.5–2 düym), qısa qarşılıqlı əlaqə seansları (5–15 saniyə) və spesifik ssenarilər — fitnes, bildirişlər, sürətli cavablar, səsli giriş üçün optimallaşdırılıb. Tərtibat Apple Watch üçün SwiftUI və Android üçün Kotlin ilə Jetpack Compose for Wear OS istifadə edilərək aparılır. Hər iki platforma üçün əsas anlayışları, arxitekturanı, naviqasiyanı və kod nümunələrini nəzərdən keçirək.
Əsas məqamlar
Watch App — geyilən cihazlarda işləmək üçün nəzərdə tutulmuş proqram: Apple Watch (watchOS) və Wear OS smart saatları. Mobil proqramdan əsas fərq — forma faktorudur. Saat ekranının diametri 1.5–2 düym (smartfonda 6–7 düym qarşı), bu da eyni vaxtda göstərilən məlumatın miqdarını məhdudlaşdırır. Proqramla qarşılıqlı əlaqə qısadır — istifadəçi vaxtı, bildirişi, nəbzi və ya addımları 5–15 saniyə ərzində yoxlayır, sonra əlini endirir.
Watch App-in əsas ssenariləri: fitnes izləyicisi (addımlar, nəbz, kalorilər, yuxu), bildirişlər (mesajlar, zənglər, təqvim), sürətli əməliyyatlar (taymer başlatma, mesaja səslə cavab vermə, musiqini idarə etmə), yoldaş (kamera pultu, avtomobil açarları, NFC ödənişləri). Counterpoint Research (2026) məlumatına görə, qlobal ağıllı saat bazarı ildə 150 milyon cihazı keçir, bunun 35%-i Apple Watch, 20%-i Wear OS, qalanı — Fitbit, Garmin və digərləridir.
Watch App məhdudiyyətləri: kiçik ekran (2 düymədək), məhdud batareya işləmə müddəti (18–24 saatadək), tam klaviaturanın olmaması (yalnız səsli giriş və ya diktə), fon tapşırıqları limiti (watchOS — 10 dəqiqəyədək, Wear OS — 5 dəqiqəyədək), əksər funksiyalar üçün telefonla sinxronizasiya zərurəti. watchOS 6 (2019) və Wear OS 3 (2022)-dən başlayaraq proqramlar LTE modulu vasitəsilə telefonsuz avtonom işləyə bilər.
watchOS — Apple-ın iOS-a əsaslanan və eyni freymvorklardan (Foundation, UIKit adaptasiya olunmuş versiyada, SwiftUI) istifadə edən ağıllı saatlar üçün əməliyyat sistemidir. Tərtibat Xcode-da Swift dilində aparılır. Əsas UI freymvorku — SwiftUI, watchOS-a xas komponentləri təmin edir: karuselli TabView, NavigationStack, DigitalCrownModifier vasitəsilə rəqəmsal tac (Digital Crown), uzun basma menyusu.
watchOS naviqasiyası iyerarxik paradiqmaya əsaslanır. Əsas elementlər: iyerarxik yığın (NavigationStack avtomatik qayıdışla), modal təqdimatlar (sheet), səhifə əsaslı naviqasiya (.tabViewStyle(.page) ilə TabView), uzun basma zamanı kontekst menyuları. Digital Crown məzmunu sürüşdürməyə və dəyərləri dəyişməyə imkan verir. Jestlər: toxunma, uzun basma, sürüşdürmə, Force Touch (watchOS 7-yədək), Digital Crown fırlanması.
watchOS-un əsas freymvorkları: HealthKit (sağlamlıq məlumatlarına giriş — nəbz, addımlar, yuxu, EKQ), CoreMotion (akselerometr, giroskop), WatchConnectivity (iPhone ilə məlumat mübadiləsi), ClockKit (siferblatda komplikasiyalar), BackgroundTasks (fon yeniləmələri 10 dəqiqəyədək), ARKit (Series 9+-da effektlərlə FaceTime). Watch App tamhüquqlu (dockda ayrıca proqram) və ya genişləndirmə (iOS versiyası ilə eyni vaxtda) ola bilər.
Wear OS — Android əsaslı Google-un ağıllı saatlar platforması. Müasir tərtibat Kotlin dilində Jetpack Compose for Wear OS ilə aparılır — dairəvi ekranlar üçün optimallaşdırılmış komponentlər dəsti: Scaffold, ScalingLazyColumn, Chip, Button, Card, Stepper. Mobil Compose-dan fərqli olaraq, Wear OS öz modifierlərindən istifadə edir: scrollable şaquli sürüşdürmə üçün, swipable sürüşdürmə üçün, RotaryInput çarxı idarə etmək üçün.
Wear OS naviqasiyası yan paneldən (SwipeToDismiss) və ekran-kartlardan istifadə edir. Əsas elementlər: SwipeDismissableNavHost (sürüşdürmə ilə qayıdışla naviqasiya), ekranların yerləşdirilməsi (siyahılar üçün ScalingLazyColumn), üfüqi karusel (Carousel), siferblat (WatchFace WatchFaceService vasitəsilə). Google qayıdış üçün yan sürüşdürmə və siyahılar üçün şaquli sürüşdürmə tövsiyə edir. Saatdakı güc düyməsi son proqramların siyahısını açır.
Wear OS-da sağlamlıq və sensorlar: Health Services API (məlumat təminatçıları vasitəsilə addımlar, nəbz, kalorilər, yuxu, SpO2), SensorManager (akselerometr, giroskop, barometr, maqnitometr), Location Services (FusedLocationProvider vasitəsilə GPS). Wear OS 5+ qaçış, gəzinti, velosiped sürmə və üzmə izləməni fəaliyyət növünün avtomatik təyini ilə dəstəkləyir. Məlumatlar Health Connect vasitəsilə Google Fit ilə sinxronlaşır.
SwiftUI və HealthKit istifadə edərək Apple Watch-da nəbz izləmə proqramını nəzərdən keçirək.
import SwiftUI
import HealthKit
// Ürək döyüntüsü üçün məlumat modeli
struct HeartRateData: Identifiable {
let id = UUID()
let bpm: Double
let date: Date
}
// HealthKit üçün ViewModel
@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)
}
}
// Əsas ekran
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)
}
}
Əsas məqamlar: HKHealthStore HealthKit məlumatlarına giriş tələb edir; HKObserverQuery real vaxtda nəbz dəyişiklikləri barədə xəbərdarlıq edir; HKSampleQuery son dəyəri alır. Watch App @Observable sayəsində currentHeartRate dəyişdikdə UI-nı avtomatik yeniləyir. HealthKit məlumatları cihazda lokal emal edir — server sorğuları tələb olunmur.
Jetpack Compose və Health Services API ilə Wear OS üçün analoji proqram.
// 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 — sensorlara giriş üçün 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 = "Nəbz",
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-un əsas komponentləri: tipik layout üçün Scaffold TimeText və Vignette ilə; .scrollable() modifier dairəvi ekranla uyğunluq üçün; nəbz sensorlarına giriş üçün HealthService (Horologist). Jetpack Compose for Wear OS interfeysi avtomatik olaraq dairəvi və kvadrat ekranlara uyğunlaşdırır — tərtibatçı müxtəlif forma faktorlarını əl ilə idarə etməməlidir.
Tez-tez verilən suallar
Watch App məhdud ekrana (diametr 1.5–2 düym), kiçik tutumlu batareyadan işləyir və jest idarəsindən istifadə edir. Qarşılıqlı əlaqə qısadır — 5–15 saniyə, proqram maksimal yığcam olmalı və 1–2 əsas göstəricini göstərməlidir.
Apple Watch üçün — Swift SwiftUI və WatchKit freymvorkları ilə. Wear OS üçün — Kotlin Jetpack Compose for Wear OS ilə. Hər iki platforma interfeys qurmaq üçün deklarativ yanaşmanı dəstəkləyir.
Bəli, LTE-li Apple Watch Series 3 və watchOS 6+-dan başlayaraq proqram Saatda App Store vasitəsilə avtonom işləyə bilər. Wear OS da saatda Google Play vasitəsilə avtonom işləyən LTE versiyalarını dəstəkləyir.
Əsas məhdudiyyətlər: ekran ölçüsü (2 düymədək), məhdud batareya işləmə müddəti (18 saata qədər), tam brauzer və klaviaturanın olmaması, fon tapşırıqları limiti (watchOS — 10 dəqiqəyədək, Wear OS — 5 dəqiqəyədək).
Apple Watch-da nəbz, addımlar, yuxu üçün HealthKit (HKHealthStore, HKSampleQuery) və akselerometr üçün CoreMotion istifadə olunur. Wear OS-da — sağlamlıq metrikaları üçün Health Services API (Horologist vasitəsilə) və sensorların xam məlumatları üçün SensorManager.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun