Watch App: nedir, Apple Watch ve Wear OS geliştirme

Yazar: IT Sectr Yayınlanma: 2026-02-15 Okuma süresi: 9 dk

Watch App, giyilebilir cihazlar için bir uygulamadır: watchOS çalıştıran Apple Watch ve Google'ın Wear OS'li akıllı saatleri. Mobil uygulamaların aksine Watch App, küçük ekran (1.5–2 inç köşegen), kısa etkileşim oturumları (5–15 saniye) ve belirli senaryolar (fitness, bildirimler, hızlı yanıtlar, sesli giriş) için optimize edilmiştir. Geliştirme, Apple Watch için SwiftUI ve Android için Kotlin ile Jetpack Compose for Wear OS ile yapılır. Her iki platform için temel kavramları, mimariyi, navigasyonu ve kod örneklerini inceleyelim.

Önemli noktalar

  • Watch App — kısa oturumlar (5–15 saniye) ve sınırlı ekran ile akıllı saatler için uygulama
  • Apple Watch SwiftUI ve WatchKit ile watchOS, katı hiyerarşik navigasyon kullanır
  • Wear OS Jetpack Compose for Wear OS, Material You ve yan navigasyon ile Kotlin kullanır
  • Otonomi — saatin LTE sürümleri, uygulamanın akıllı telefon bağlantısı olmadan çalışmasını sağlar
  • Sensörler — ivmeölçer, jiroskop, kalp atış hızı monitörü, GPS her iki platformda yerel API'ler aracılığıyla kullanılabilir

Watch App Nedir

Watch App, giyilebilir cihazlarda çalışmak üzere tasarlanmış bir uygulamadır: Apple Watch (watchOS) ve Wear OS akıllı saatler. Mobil uygulamadan temel fark, form faktörüdür. Saat ekranının köşegeni 1.5–2 inçtir (akıllı telefonun 6–7 inçine kıyasla), bu da aynı anda görüntülenen bilgi miktarını sınırlar. Uygulamayla etkileşim kısadır — kullanıcı 5–15 saniye içinde saati, bildirimi, nabzı veya adımları kontrol eder, ardından elini indirir.

Temel Watch App senaryoları: fitness takipçisi (adımlar, nabız, kalori, uyku), bildirimler (mesajlar, aramalar, takvim), hızlı işlemler (zamanlayıcı başlatma, sese mesaj yanıtlama, müzik kontrolü), yardımcı (kamera uzaktan kumandası, araba anahtarları, NFC ödemesi). Counterpoint Research'e (2026) göre, küresel akıllı saat pazarı yılda 150 milyon cihazı aşmaktadır; bunun %35'i Apple Watch, %20'si Wear OS, geri kalanı Fitbit, Garmin ve diğerleridir.

Watch App sınırlamaları: küçük ekran (2 inçe kadar), sınırlı pil ömrü (18–24 saate kadar), tam klavye yok (yalnızca sesli giriş veya dikte), arka plan görev sınırı (watchOS — 10 dakikaya kadar, Wear OS — 5 dakikaya kadar), çoğu işlev için telefonla senkronizasyon gerekliliği. watchOS 6 (2019) ve Wear OS 3 (2022) ile birlikte uygulamalar, bir telefonla eşleştirilmeden LTE modülü üzerinden otonom olarak çalışabilir.

Apple Watch: watchOS ve SwiftUI

watchOS, Apple'ın akıllı saatler için işletim sistemidir, iOS tabanlıdır ve aynı frameworkleri (Foundation, UIKit uyarlanmış sürümü, SwiftUI) kullanır. Geliştirme Xcode'da Swift ile yapılır. Ana UI framework'ü SwiftUI'dir ve watchOS'a özel bileşenler sağlar: karuselli TabView, NavigationStack, DigitalCrownModifier aracılığıyla Digital Crown, uzun basma menüsü.

watchOS'ta navigasyon hiyerarşik bir paradigmaya dayanır. Ana öğeler: hiyerarşik yığın (otomatik dönüşlü NavigationStack), modal sunumlar (sheet), sayfa tabanlı navigasyon (.tabViewStyle(.page) ile TabView aracılığıyla), uzun basmada bağlamsal menüler. Digital Crown, içeriği kaydırma ve değerleri değiştirme olanağı sağlar. Jestler: dokunma, uzun basma, kaydırma, Force Touch (watchOS 7'ye kadar), Digital Crown döndürme.

Temel watchOS frameworkleri: HealthKit (sağlık verilerine erişim — nabız, adımlar, uyku, EKG), CoreMotion (ivmeölçer, jiroskop), WatchConnectivity (iPhone ile veri alışverişi), ClockKit (kadranda komplikasyonlar), BackgroundTasks (10 dakikaya kadar arka plan güncellemeleri), ARKit (Series 9+'da FaceTime efektleri). Watch App tam özellikli (dock'ta ayrı uygulama) veya bir uzantı (iOS sürümüyle eşzamanlı) olabilir.

Wear OS: Kotlin ve Compose

Wear OS, Android tabanlı Google'ın akıllı saatler platformudur. Modern geliştirme, Jetpack Compose for Wear OS ile Kotlin'de yapılır — yuvarlak ekranlar için optimize edilmiş bileşenler kümesi: Scaffold, ScalingLazyColumn, Chip, Button, Card, Stepper. Mobil Compose'un aksine Wear OS, kendi değiştiricilerini kullanır: dikey kaydırma için scrollable, kaydırma için swipable, kurma kolu kontrolü için RotaryInput.

Wear OS'ta navigasyon bir yan panel (SwipeToDismiss) ve kart ekranları kullanır. Ana öğeler: SwipeDismissableNavHost (geri kaydırmalı navigasyon), ekran konumlandırma (listeler için ScalingLazyColumn), yatay karusel (Carousel), saat kadranı (WatchFaceService aracılığıyla WatchFace). Google, geri dönmek için yan kaydırma ve listeler için dikey kaydırma kullanılmasını önerir. Saatteki güç düğmesi son uygulamalar listesini açar.

Wear OS'ta sağlık ve sensörler: Health Services API (veri sağlayıcıları aracılığıyla adımlar, nabız, kalori, uyku, SpO2), SensorManager (ivmeölçer, jiroskop, barometre, manyetometre), Location Services (FusedLocationProvider aracılığıyla GPS). Wear OS 5+, otomatik aktivite türü algılama ile koşu, yürüyüş, bisiklet ve yüzme takibini destekler. Veriler Health Connect aracılığıyla Google Fit ile senkronize olur.

Kod Örneği: Apple Watch için Swift

SwiftUI ve HealthKit kullanan Apple Watch için kalp atışı takip uygulamasını inceleyelim.

swift
import SwiftUI
import HealthKit

// Nabız veri modeli
struct HeartRateData: Identifiable {
    let id = UUID()
    let bpm: Double
    let date: Date
}

// HealthKit için 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)
    }
}

// Ana 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)
    }
}

Önemli noktalar: HKHealthStore HealthKit verilerine erişim ister; HKObserverQuery gerçek zamanlı nabız değişikliklerini bildirir; HKSampleQuery en son değeri alır. @Observable sayesinde currentHeartRate değiştiğinde Watch App UI'yı otomatik olarak günceller. HealthKit verileri cihazda yerel olarak işler — sunucu istekleri gerekmez.

Kod Örneği: Wear OS için Kotlin

Jetpack Compose ve Health Services API ile Kotlin'de Wear OS için benzer uygulama.

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 — Sensör erişimi için 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 = "Kalp atış hızı",
                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 temel bileşenleri: standart düzen için TimeText ve Vignette ile Scaffold; yuvarlak ekran uyumluluğu için .scrollable() değiştiricisi; kalp atışı sensörü erişimi için HealthService (Horologist). Jetpack Compose for Wear OS, arayüzü otomatik olarak yuvarlak ve kare ekranlara uyarlar — geliştiricinin farklı form faktörlerini manuel olarak ele alması gerekmez.

Sıkça Sorulan Sorular

Watch App mobil uygulamadan nasıl farklıdır?

Watch App sınırlı bir ekrana (1.5–2 inç köşegen) sahiptir, küçük kapasiteli bir pille çalışır ve jest kontrolü kullanır. Etkileşim kısadır — 5–15 saniye, uygulama mümkün olduğunca öz olmalı ve 1–2 temel metrik göstermelidir.

Watch App için hangi diller kullanılır?

Apple Watch için — SwiftUI ve WatchKit frameworkleri ile Swift. Wear OS için — Jetpack Compose for Wear OS ile Kotlin. Her iki platform da arayüz oluşturmak için bildirimsel yaklaşımı destekler.

Watch App iPhone olmadan çalışabilir mi?

Evet, LTE'li Apple Watch Series 3 ve watchOS 6+ ile başlayarak, uygulama saatteki App Store üzerinden otonom olarak çalışabilir. Wear OS da saatte Google Play üzerinden bağımsız çalışan LTE sürümlerini destekler.

Watch App'in sınırlamaları nelerdir?

Ana sınırlamalar: ekran boyutu (2 inçe kadar), sınırlı pil ömrü (18 saate kadar), tam tarayıcı veya klavye yok, arka plan görev sınırı (watchOS — 10 dakikaya kadar, Wear OS — 5 dakikaya kadar).

Saatteki sensörlere nasıl erişilir?

Apple Watch'ta nabız, adımlar, uyku için HealthKit (HKHealthStore, HKSampleQuery) ve ivmeölçer için CoreMotion kullanılır. Wear OS'ta — sağlık metrikleri için Health Services API (Horologist aracılığıyla) ve ham sensör verileri için SensorManager kullanılır.

Özet

  • Watch App — 5–15 saniyelik oturumlar ve 2 inçe kadar ekran ile akıllı saatler için uygulama
  • Apple Watch sensör erişimi için SwiftUI, NavigationStack, Digital Crown ve HealthKit ile watchOS kullanır
  • Wear OS Jetpack Compose for Wear OS, Scaffold, ScalingLazyColumn ve Health Services API ile Kotlin kullanır
  • Otonomi — LTE modülü her iki platformda da akıllı telefon bağlantısı olmadan uygulama çalışmasını sağlar
  • HealthKit watchOS'ta ve Health Services Wear OS'ta nabız, adımlar, uyku ve SpO2 erişimi sağlar
  • Sınırlamalar — küçük ekran, 18–24 saat pil, arka plan görev sınırı, klavye yok
  • Ana senaryolar — fitness takipçisi, bildirimler, hızlı yanıtlar, uzaktan kumanda, NFC ödemeleri

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun