Watch App: apa itu, pengembangan untuk Apple Watch dan Wear OS

Penulis: IT Sectr Diterbitkan: 2026-02-15 Waktu membaca: 9 mnt

Watch App — aplikasi untuk perangkat wearable: Apple Watch dengan watchOS dan jam tangan pintar Wear OS dari Google. Berbeda dengan aplikasi seluler, Watch App dioptimalkan untuk layar kecil (diagonal 1.5–2 inci), sesi interaksi singkat (5–15 detik) dan skenario spesifik — kebugaran, notifikasi, jawaban cepat, input suara. Pengembangan dilakukan dengan SwiftUI untuk Apple Watch dan Kotlin dengan Jetpack Compose for Wear OS untuk Android. Mari kita bahas konsep kunci, arsitektur, navigasi, dan contoh kode untuk kedua platform.

Poin utama

  • Watch App — aplikasi untuk jam tangan pintar dengan sesi singkat (5–15 detik) dan layar terbatas
  • Apple Watch menggunakan watchOS dengan SwiftUI dan WatchKit, navigasi hierarkis ketat
  • Wear OS menggunakan Kotlin dengan Jetpack Compose for Wear OS, Material You dan navigasi samping
  • Otonomi — versi LTE jam tangan memungkinkan aplikasi bekerja tanpa koneksi ke ponsel pintar
  • Sensor — akselerometer, giroskop, pengukur denyut nadi, GPS tersedia melalui API native di kedua platform

Apa itu Watch App

Watch App — adalah aplikasi yang dirancang untuk bekerja pada perangkat wearable: Apple Watch (watchOS) dan jam tangan pintar Wear OS. Perbedaan utama dari aplikasi seluler — faktor bentuk. Layar jam tangan memiliki diagonal 1.5–2 inci (dibandingkan 6–7 inci pada ponsel pintar), yang membatasi jumlah informasi yang ditampilkan secara bersamaan. Interaksi dengan aplikasi singkat — pengguna memeriksa waktu, notifikasi, denyut nadi, atau langkah dalam 5–15 detik, lalu menurunkan tangan.

Skenario kunci Watch App: pelacak kebugaran (langkah, denyut nadi, kalori, tidur), notifikasi (pesan, panggilan, kalender), tindakan cepat (menyalakan timer, menjawab pesan dengan suara, mengontrol musik), pendamping (remote kamera, kunci mobil, pembayaran NFC). Menurut Counterpoint Research (2026), pasar global jam tangan pintar melebihi 150 juta perangkat per tahun, dengan Apple Watch menguasai 35%, Wear OS — 20%, sisanya — Fitbit, Garmin dan lainnya.

Keterbatasan Watch App: layar kecil (hingga 2 inci), daya tahan baterai terbatas (hingga 18–24 jam), tidak ada keyboard lengkap (hanya input suara atau dikte), batasan tugas latar belakang (watchOS — hingga 10 menit, Wear OS — hingga 5 menit), kebutuhan sinkronisasi dengan ponsel untuk sebagian besar fungsi. Mulai watchOS 6 (2019) dan Wear OS 3 (2022) aplikasi dapat bekerja secara otonom melalui modul LTE tanpa dipasangkan dengan ponsel.

Apple Watch: watchOS dan SwiftUI

watchOS — sistem operasi Apple untuk jam tangan pintar, berbasis iOS dan menggunakan framework yang sama (Foundation, UIKit dalam versi adaptasi, SwiftUI). Pengembangan dilakukan di Xcode dengan Swift. Framework UI utama — SwiftUI, yang menyediakan komponen khusus watchOS: TabView dengan carousel, NavigationStack, mahkota digital (Digital Crown) melalui DigitalCrownModifier, menu tekan lama.

Navigasi di watchOS didasarkan pada paradigma hierarkis. Elemen utama: tumpukan hierarkis (NavigationStack dengan kembali otomatis), presentasi modal (sheet), navigasi berbasis halaman (page-based melalui TabView dengan .tabViewStyle(.page)), menu konteks saat tekan lama. Digital Crown memungkinkan menggulir konten dan mengubah nilai. Gestur: ketuk, tekan lama, geser, Force Touch (hingga watchOS 7), putaran Digital Crown.

Framework kunci watchOS: HealthKit (akses ke data kesehatan — denyut nadi, langkah, tidur, EKG), CoreMotion (akselerometer, giroskop), WatchConnectivity (pertukaran data dengan iPhone), ClockKit (komplikasi di tampilan jam), BackgroundTasks (pembaruan latar belakang hingga 10 menit), ARKit (FaceTime dengan efek di Series 9+). Watch App dapat berupa aplikasi penuh (aplikasi terpisah di dock) atau ekstensi (bersamaan dengan versi iOS).

Wear OS: Kotlin dan Compose

Wear OS — platform Google untuk jam tangan pintar, berbasis Android. Pengembangan modern dilakukan dengan Kotlin dan Jetpack Compose for Wear OS — kumpulan komponen yang dioptimalkan untuk layar bundar: Scaffold, ScalingLazyColumn, Chip, Button, Card, Stepper. Berbeda dengan Compose seluler, Wear OS menggunakan pengubahnya sendiri: scrollable untuk pengguliran vertikal, swipable untuk menggeser, RotaryInput untuk mengontrol kenop.

Navigasi di Wear OS menggunakan panel samping (SwipeToDismiss) dan layar-kartu. Elemen utama: SwipeDismissableNavHost (navigasi dengan kembali melalui geser), pemosisian layar (ScalingLazyColumn untuk daftar), carousel horizontal (Carousel), tampilan jam (WatchFace melalui WatchFaceService). Google merekomendasikan penggunaan geser samping untuk kembali dan pengguliran vertikal untuk daftar. Tombol daya di jam tangan membuka daftar aplikasi terbaru.

Kesehatan dan sensor di Wear OS: Health Services API (langkah, denyut nadi, kalori, tidur, SpO2 melalui penyedia data), SensorManager (akselerometer, giroskop, barometer, magnetometer), Location Services (GPS melalui FusedLocationProvider). Wear OS 5+ mendukung pelacakan lari, jalan, bersepeda, dan berenang dengan deteksi otomatis jenis aktivitas. Data disinkronkan dengan Google Fit melalui Health Connect.

Contoh kode: Swift untuk Apple Watch

Mari kita lihat aplikasi pelacakan denyut nadi di Apple Watch menggunakan SwiftUI dan HealthKit.

swift
import SwiftUI
import HealthKit

// Model data untuk denyut nadi
struct HeartRateData: Identifiable {
    let id = UUID()
    let bpm: Double
    let date: Date
}

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

// Layar utama
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)
    }
}

Poin kunci: HKHealthStore meminta akses ke data HealthKit; HKObserverQuery memberi tahu tentang perubahan denyut nadi secara real-time; HKSampleQuery mendapatkan nilai terakhir. Watch App secara otomatis memperbarui UI saat currentHeartRate berubah berkat @Observable. HealthKit memproses data secara lokal di perangkat — permintaan ke server tidak diperlukan.

Contoh kode: Kotlin untuk Wear OS

Aplikasi serupa untuk Wear OS dengan Kotlin, Jetpack Compose, dan 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 untuk akses ke sensor
        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 = "Denyut nadi",
                modifier = Modifier.size(40.dp),
                tint = MaterialTheme.colors.error
            )

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

Komponen kunci Wear OS: Scaffold dengan TimeText dan Vignette untuk tata letak tipikal; pengubah .scrollable() untuk kompatibilitas dengan layar bundar; HealthService (Horologist) untuk akses ke sensor denyut nadi. Jetpack Compose for Wear OS secara otomatis menyesuaikan antarmuka untuk layar bundar dan persegi — pengembang tidak perlu menangani faktor bentuk yang berbeda secara manual.

Pertanyaan yang sering diajukan

Apa perbedaan Watch App dengan aplikasi seluler?

Watch App memiliki layar terbatas (diagonal 1.5–2 inci), bekerja dengan baterai berkapasitas kecil, dan menggunakan kontrol gestur. Interaksinya singkat — 5–15 detik, aplikasi harus maksimal ringkas dan menampilkan 1–2 indikator kunci.

Bahasa apa yang digunakan untuk Watch App?

Untuk Apple Watch — Swift dengan framework SwiftUI dan WatchKit. Untuk Wear OS — Kotlin dengan Jetpack Compose for Wear OS. Kedua platform mendukung pendekatan deklaratif untuk membangun antarmuka.

Bisakah Watch App bekerja tanpa iPhone?

Ya, mulai Apple Watch Series 3 dengan LTE dan watchOS 6+ aplikasi dapat bekerja secara otonom melalui App Store di jam tangan. Wear OS juga mendukung versi LTE dengan kerja otonom melalui Google Play di jam tangan.

Apa keterbatasan Watch App?

Keterbatasan utama: ukuran layar (hingga 2 inci), daya tahan baterai terbatas (hingga 18 jam), tidak ada browser dan keyboard lengkap, batasan tugas latar belakang (watchOS — hingga 10 menit, Wear OS — hingga 5 menit).

Bagaimana cara mengakses sensor di jam tangan?

Di Apple Watch digunakan HealthKit (HKHealthStore, HKSampleQuery) untuk denyut nadi, langkah, tidur dan CoreMotion untuk akselerometer. Di Wear OS — Health Services API (melalui Horologist) untuk metrik kesehatan dan SensorManager untuk data sensor mentah.

Kesimpulan

  • Watch App — aplikasi untuk jam tangan pintar dengan sesi 5–15 detik dan layar terbatas hingga 2 inci
  • Apple Watch menggunakan watchOS dengan SwiftUI, NavigationStack, Digital Crown dan HealthKit untuk akses sensor
  • Wear OS menggunakan Kotlin dengan Jetpack Compose for Wear OS, Scaffold, ScalingLazyColumn dan Health Services API
  • Otonomi — modul LTE memungkinkan aplikasi bekerja tanpa koneksi ke ponsel pintar di kedua platform
  • HealthKit di watchOS dan Health Services di Wear OS menyediakan akses ke denyut nadi, langkah, tidur, dan SpO2
  • Keterbatasan — layar kecil, baterai 18–24 jam, batasan tugas latar belakang, tidak ada keyboard
  • Skenario utama — pelacak kebugaran, notifikasi, jawaban cepat, remote kontrol, pembayaran NFC

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga