watchOS: dasar-dasar pengembangan untuk Apple Watch dengan SwiftUI

Penulis: IT Sectr Diterbitkan: 2026-02-07 Waktu membaca: 12 mnt

watchOS — sistem operasi Apple untuk Apple Watch, pertama kali dirilis pada tahun 2015 bersama dengan jam tangan pertama. Pengembangan aplikasi untuk watchOS dilakukan dalam Swift menggunakan SwiftUI dan WatchKit. Fitur: layar persegi panjang kecil, konsumsi daya terbatas dari baterai 0,3 Wh, dan integrasi erat dengan iPhone melalui Bluetooth. Menurut data Counterpoint Research, Apple Watch menguasai lebih dari 30% pasar jam tangan pintar global.

Poin Utama

  • watchOS — OS untuk Apple Watch pada kernel XNU dengan orientasi konsumsi daya rendah
  • SwiftUI — framework utama untuk mengembangkan antarmuka aplikasi watchOS
  • Watch Connectivity — mekanisme pertukaran data antara Apple Watch dan iPhone
  • Smart Stack — tumpukan widget cerdas, diperkenalkan di watchOS 10
  • HealthKit — framework untuk akses ke sensor: detak jantung, SpO2, suhu, akselerometer

Apa itu watchOS?

watchOS — sistem operasi untuk jam tangan pintar Apple, berbasis kernel XNU Darwin. Pertama kali dirilis pada 24 April 2015 bersama Apple Watch Series 0. Sistem ini dibangun di atas arsitektur yang sama dengan iOS, tetapi dioptimalkan untuk layar kecil (1,5 hingga 1,9 inci), memori terbatas (hingga 1 GB RAM di Series 9), dan konsumsi daya minimal.

Menurut StatCounter (2026), watchOS menguasai sekitar 55% pasar sistem operasi untuk jam tangan pintar, melampaui Wear OS dan sistem proprietary produsen Tiongkok. Apple merilis pembaruan utama watchOS setiap tahun, mendukung jam tangan hingga 5 tahun sejak peluncuran.

Fitur utama watchOS — ketergantungan pada iPhone. Sebagian besar aplikasi menggunakan Watch Connectivity untuk sinkronisasi data. Mulai watchOS 6, jam tangan dapat menginstal aplikasi langsung dari App Store, tetapi otonomi penuh tanpa iPhone hanya didukung sejak watchOS 9.

Sejarah versi watchOS

Versi pertama Watch OS 1.0 tidak mendukung aplikasi pihak ketiga — hanya aplikasi bawaan Apple. watchOS 2 (2015) membuka SDK untuk pengembang. watchOS 3 (2016) mempercepat peluncuran aplikasi 7 kali lipat. watchOS 6 (2019) memperkenalkan App Store di jam tangan. watchOS 9 (2022) menambahkan obat-obatan dan pelacakan tidur yang ditingkatkan. watchOS 10 (2023) menjadi pembaruan antarmuka terbesar sejak peluncuran.

Versi watchOSTahunInovasi Utama
Watch OS 12015Versi pertama, hanya aplikasi native Apple
watchOS 22015SDK terbuka, aplikasi pihak ketiga, Watch Connectivity
watchOS 32016Peluncuran aplikasi instan, Dock, Scribble
watchOS 62019App Store di jam tangan, Cycle Tracking, Noise app
watchOS 92022Obat-obatan, fase tidur, pendamping lari yang ditingkatkan
watchOS 102023Smart Stack, Double Tap, wajah jam baru

Arsitektur watchOS

Arsitektur watchOS terdiri dari tiga lapisan yang mengisolasi perangkat keras dari aplikasi pengguna. Berbeda dengan iOS, watchOS menggunakan pendekatan komponen: aplikasi terdiri dari dua target — ekstensi (extension) dan host di iPhone.

Kernel dan layanan sistem

Lapisan bawah — kernel XNU yang dimodifikasi dengan driver untuk chip S4/S5/S6/S7/S8/S9 Apple. Apple Watch Series 9 menggunakan S9 SiP dengan 5,6 miliar transistor dan Neural Engine 4-inti. Layanan sistem mencakup Core Bluetooth, Watch Connectivity, HealthKit, dan Core Motion. Semua tugas latar belakang dikelola oleh BGTaskScheduler — penjadwal sistem yang mengoptimalkan konsumsi daya.

WatchKit — lapisan aplikasi

WatchKit — framework untuk membuat antarmuka aplikasi watchOS. Termasuk WKInterfaceController, WKInterfaceGroup, WKInterfaceLabel, dan WKInterfaceButton. Sejak watchOS 6, Apple merekomendasikan SwiftUI daripada WatchKit. SwiftUI memberikan kemampuan yang sama, tetapi dengan sintaks deklaratif dan adaptasi otomatis ke ukuran layar: 38 mm (272×340), 42 mm (312×390), 40 mm (324×394), 44 mm (368×448), 45 mm (396×484), 49 mm (410×502 di Apple Watch Ultra).

Mode latar belakang dan konsumsi daya

watchOS membatasi kerja latar belakang aplikasi untuk menghemat baterai. Mode latar belakang yang tersedia: Workout (latihan), HealthKit (pemantauan kesehatan), Location (geolokasi), Audio (pemutar audio), dan Complication (data di wajah jam). Setiap mode memerlukan capability terpisah di entitlements. Konsumsi daya tipikal: aplikasi aktif — 50-80 mA, mode latar belakang — 5-15 mA, Standby — 1-3 mA.

swift
import BackgroundTasks
import WatchKit

/// Perencanaan pembaruan data latar belakang di watchOS
class BackgroundTaskManager: NSObject {

    func scheduleBackgroundRefresh() {
        let request = BGAppRefreshTaskRequest(identifier: "com.example.refresh")
        request.earliestBeginDate = Date(timeIntervalSinceNow: 30 * 60)

        try? BGTaskScheduler.shared.submit(request)
    }

    func handleAppRefresh(task: BGAppRefreshTask) {
        task.expirationHandler = { task.setTaskCompleted(success: false) }

        DataService.shared.fetchData { result in
            switch result {
            case .success:
                ComplicationController.reloadComplications()
                task.setTaskCompleted(success: true)
            case .failure:
                task.setTaskCompleted(success: false)
            }
        }
    }
}

/// Pendaftaran tugas latar belakang di WKExtensionDelegate
class ExtensionDelegate: NSObject, WKExtensionDelegate {
    let manager = BackgroundTaskManager()

    func handle(_ backgroundTasks: Set<WKBackgroundTask>) {
        for task in backgroundTasks {
            switch task {
            case let refreshTask as BGAppRefreshTask:
                manager.handleAppRefresh(task: refreshTask)
            default:
                task.setTaskCompleted(success: false)
            }
        }
    }
}

BGTaskScheduler menjamin bahwa tugas latar belakang dijalankan pada saat yang optimal — saat jam tangan di charger dan terhubung ke iPhone. WKExtensionDelegate memproses tugas latar belakang yang masuk dan memperbarui data di wajah jam. ComplicationController.reloadComplications memperbarui widget di wajah jam yang dipilih.

watchOS 10: Smart Stack dan Double Tap

watchOS 10 — pembaruan antarmuka terbesar dalam sejarah platform, dirilis pada September 2023. Sistem beralih dari navigasi hierarkis ke navigasi berorientasi konten: layar utama menjadi Smart Stack — tumpukan widget cerdas yang menggantikan dock aplikasi.

Smart Stack

Smart Stack — daftar vertikal widget yang ditampilkan di bawah wajah jam. Widget diperingkat berdasarkan konteks: pagi hari menampilkan cuaca dan kalender, siang hari — aktivitas dan pengingat, sore hari — meditasi dan persiapan tidur. Pengembang dapat menambahkan widget kustom melalui WidgetKit untuk watchOS, menggunakan API yang sama seperti untuk iOS 17.

Double Tap

Double Tap — gerakan menyatukan jari telunjuk dan ibu jari, dikenali oleh akselerometer dan giroskop tanpa menyentuh layar. Di Apple Watch Series 9 dan Ultra 2, gerakan dilakukan di tingkat perangkat keras melalui Neural Engine. Pengembang menerima peristiwa melalui UIDoubleTapGestureRecognizer atau melalui modifier SwiftUI .onTapGesture(count: 2). Gerakan tidak memerlukan kalibrasi dan bekerja di orientasi tangan mana pun.

API baru untuk pengembang

watchOS 10 memperkenalkan: SwiftUI Animation dengan dukungan animasi Spring dan Keyframe, MapKit untuk menampilkan peta di jam tangan, VideoPlayer untuk memutar video pendek (hingga 30 detik), VoiceOver yang ditingkatkan dengan gerakan, dan paradigma navigasi baru NavigationStack sebagai pengganti NavigationView.

APITujuanTersedia sejak
WidgetKit for watchOSWidget untuk Smart StackwatchOS 10
UIDoubleTapGestureGerakan Double TapwatchOS 10 (S9+)
MapKitMenampilkan peta di jam tanganwatchOS 10
NavigationStackParadigma navigasi baruwatchOS 10
SwiftUI KeyframeAnimasi bingkaiwatchOS 10

SwiftUI untuk Apple Watch

SwiftUI — framework utama untuk mengembangkan antarmuka di watchOS. Apple merekomendasikan SwiftUI untuk semua proyek baru mulai watchOS 7. SwiftUI untuk jam tangan menggunakan prinsip yang sama seperti untuk iOS, tetapi dengan modifier dan komponen khusus watchOS.

Komponen SwiftUI khusus watchOS

SwiftUI untuk watchOS mencakup: TabView dengan gaya page untuk menggeser antar layar, DigitalCrownRotation untuk memproses putaran mahkota, SceneStorage untuk menyimpan status antar peluncuran, WKNotificationScene untuk notifikasi kustom, dan ComplicationDescriptor untuk data di wajah jam.

swift
import SwiftUI
import HealthKit

/// Aplikasi watchOS untuk pemantauan detak jantung
@main
struct HeartMonitorApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        WKNotificationScene(
            controller: NotificationController.self,
            category: "heartAlert"
        )
    }
}

struct ContentView: View {
    @State private var heartRate: Double = 0
    private let healthStore = HKHealthStore()

    var body: some View {
        TabView {
            HeartRateView(rate: heartRate)
                .tabItem { Label("Detak Jantung", systemImage: "heart.fill") }

            StepsView()
                .tabItem { Label("Langkah", systemImage: "figure.walk") }

            SettingsView()
                .tabItem { Label("Pengaturan", systemImage: "gear") }
        }
        .tabViewStyle(.page)
        .onAppear(perform: setupHealthKit)
    }

    private func setupHealthKit() {
        guard HKHealthStore.isHealthDataAvailable() else { return }
        let heartType = HKQuantityType(.heartRate)

        healthStore.requestAuthorization(toShare: nil, read: [heartType]) { success, error in
            guard success else { return }
            startHeartRateQuery()
        }
    }

    private func startHeartRateQuery() {
        let heartType = HKQuantityType(.heartRate)
        let query = HKObserverQuery(sampleType: heartType, predicate: nil) { _, _, error in
            guard error == nil else { return }
            fetchLatestHeartRate()
        }
        healthStore.execute(query)
    }

    private func fetchLatestHeartRate() {
        let heartType = HKQuantityType(.heartRate)
        let sort = NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: false)
        let query = HKSampleQuery(sampleType: heartType, predicate: nil,
                                    limit: 1, sortDescriptors: [sort]) { _, samples, _ in
            guard let sample = samples?.first as? HKQuantitySample else { return }
            let rate = sample.quantity.doubleValue(for: HKUnit(from: "count/min"))
            DispatchQueue.main.async { heartRate = rate }
        }
        healthStore.execute(query)
    }
}

struct HeartRateView: View {
    let rate: Double

    var body: some View {
        VStack(spacing: 12) {
            Image(systemName: "heart.fill")
                .foregroundStyle(.red)
                .font(.system(size: 48))
                .symbolEffect(.pulse)

            Text("\(Int(rate))")
                .font(.system(.title, design: .rounded))
                .contentTransition(.numericText())
                .bold()

            Text("bpm")
                .font(.caption)
                .foregroundStyle(.secondary)
        }
    }
}

Aplikasi HeartMonitorApp mendemonstrasikan struktur tipikal aplikasi watchOS di SwiftUI: TabView dengan gaya page untuk menggeser antar layar, integrasi dengan HealthKit untuk membaca detak jantung secara real-time, WKNotificationScene untuk memproses notifikasi. SymbolEffect dengan animasi pulse menggunakan percepatan perangkat keras Neural Engine untuk animasi halus tanpa membebani CPU.

Digital Crown dan gerakan

Digital Crown — mahkota di panel samping Apple Watch. SwiftUI menyediakan DigitalCrownRotation untuk mengikat nilai ke putaran mahkota. Modifier menerima binding, rentang, dan langkah. Gerakan: tap (sentuhan), longPress (tekan lama), swipe (gesekan), dan pan (seret) — semuanya standar untuk SwiftUI dan disesuaikan dengan ukuran layar jam tangan.

WatchKit dan komponen aplikasi watchOS

WatchKit — framework asli untuk watchOS yang menggunakan pendekatan UIKit. Meskipun Apple merekomendasikan SwiftUI, WatchKit tetap relevan untuk proyek lama dan tugas spesifik: animasi kompleks di WKInterfaceGroup dan integrasi dengan SiriKit.

Struktur aplikasi watchOS

Aplikasi watchOS terdiri dari dua target: WatchKit Extension (logika dan antarmuka) dan iOS Companion App (pengaturan dan sinkronisasi). Mulai Xcode 15, dimungkinkan untuk membuat aplikasi standalone tanpa pendamping iOS. Antarmuka dijelaskan di Interface.storyboard (WatchKit) atau secara terprogram melalui SwiftUI.

KomponenWatchKitSwiftUI
LayarWKInterfaceControllerView
TombolWKInterfaceButtonButton
TabelWKInterfaceTableList
GrupWKInterfaceGroupVStack / HStack
GambarWKInterfaceImageImage / AsyncImage
LabelWKInterfaceLabelText
PetaWKInterfaceMapMap (watchOS 10+)
Wajah jamCLKComplicationDataSourceComplicationDescriptor

Complications — data di wajah jam

Complication — widget yang menampilkan data di wajah jam Apple Watch. Pengembang mengimplementasikan protokol CLKComplicationDataSource, menyediakan template untuk berbagai jenis wajah jam (circular, rectangular, modular, extraLarge). watchOS 10 mendukung ComplicationDescriptor — API yang disederhanakan untuk SwiftUI. Data diperbarui melalui Background Tasks dengan periode hingga 30 menit.

Integrasi dengan iPhone melalui Watch Connectivity

Watch Connectivity — framework untuk pertukaran data antara Apple Watch dan iPhone melalui Bluetooth atau Wi-Fi. Satu-satunya cara komunikasi antara perangkat yang dipasangkan. WCSession — kelas pusat yang mengelola sesi. Aplikasi iOS dan ekstensi watchOS harus mengimplementasikan WCSessionDelegate.

Metode transmisi data

Watch Connectivity menyediakan empat metode transmisi data: sendMessage — pengiriman segera dengan konfirmasi (bekerja hanya ketika kedua aplikasi aktif), transferUserInfo — pengiriman latar belakang kamus data, transferFile — transfer file dengan metadata, updateApplicationContext — sinkronisasi status bersama. Semua metode menjamin pengiriman saat koneksi dipulihkan.

swift
import WatchConnectivity

/// Manajer sinkronisasi antara iPhone dan Apple Watch
final class ConnectivityManager: NSObject, WCSessionDelegate {

    static let shared = ConnectivityManager()
    private let session = WCSession.default

    override private init() {
        super.init()
        session.delegate = self
        session.activate()
    }

    // MARK: — Mengirim data dari iPhone ke jam tangan
    func sendWorkoutData(_ data: [String: Any]) {
        guard session.isReachable else {
            // Jika jam tangan tidak tersedia — simpan di konteks
            try? session.updateApplicationContext(data)
            return
        }
        session.sendMessage(data, replyHandler: nil) { error in
            print("Send error: \(error.localizedDescription)")
        }
    }

    // MARK: — Menerima data di jam tangan
    func session(_ session: WCSession,
                 didReceiveMessage message: [String: Any]) {
        DispatchQueue.main.async {
            NotificationCenter.default.post(
                name: NSNotification.Name("dataReceived"),
                object: message
            )
        }
    }

    func session(_ session: WCSession,
                 activationDidCompleteWith activationState: WCSessionActivationState,
                 error: Error?) {
        print("WCSession activated: \(activationState.rawValue)")
    }

    // Tidak diperlukan di watchOS, tetapi wajib untuk protokol
    func sessionDidBecomeInactive(_ session: WCSession) {}
    func sessionDidDeactivate(_ session: WCSession) {
        session.activate()
    }
}

ConnectivityManager mengimplementasikan singleton untuk bekerja dengan WCSession. sendWorkoutData memeriksa isReachable: jika jam tangan aktif, data dikirim segera melalui sendMessage; jika tidak — disimpan di applicationContext untuk pengiriman tertunda. onReceiveMessage di sisi penerima memproses pesan masuk dan memberi tahu aplikasi melalui NotificationCenter.

Pertukaran file dan sinkronisasi

transferFile memungkinkan transfer data dalam jumlah besar: gambar, file audio, arsip. Ukuran file maksimum — 100 MB. File disimpan di direktori Inbox di perangkat penerima. transferUserInfo cocok untuk data JSON hingga 100 KB. Semua metode bekerja di latar belakang: jika perangkat tidak tersedia, transmisi dimasukkan ke dalam antrian dan dilanjutkan secara otomatis saat koneksi dipulihkan.

Menerbitkan aplikasi watchOS

Menerbitkan aplikasi watchOS mengikuti aturan yang sama dengan iOS: diperlukan langganan Apple Developer Program ($99/tahun) dan menjalani moderasi App Review. Aplikasi diunggah ke App Store Connect sebagai bagian dari aplikasi iOS atau sebagai aplikasi standalone.

Pembangunan dan distribusi

Aplikasi watchOS dapat dikirimkan dengan dua cara: sebagai ekstensi bawaan aplikasi iOS (iOS app bundle berisi watchOS .app) atau sebagai aplikasi standalone (diunduh dan berfungsi tanpa iPhone). Untuk mode standalone, diperlukan WKRunsIndependently = YES di Info.plist. Ukuran aplikasi watchOS dibatasi hingga 50 MB untuk unduhan melalui jaringan seluler.

Persyaratan App Review

Persyaratan khusus untuk watchOS: aplikasi harus berfungsi dengan benar tanpa iPhone aktif (jika dinyatakan sebagai standalone), antarmuka harus dapat dibaca tanpa perbesaran, semua elemen interaktif — setidaknya 44 titik dalam ukuran. Aplikasi yang menduplikasi fungsionalitas bawaan (misalnya, pengukur detak jantung tanpa nilai tambah) dilarang.

PersyaratanDeskripsi
Ukuran aplikasiHingga 50 MB untuk unduhan seluler, hingga 4 GB melalui Wi-Fi
Mode standaloneWKRunsIndependently = YES di Info.plist
Target sentuhanMinimum 44 pt untuk semua elemen interaktif
KeamananData HealthKit tidak dapat dikirim ke server tanpa persetujuan
KinerjaPeluncuran aplikasi tidak lebih dari 5 detik

Pertanyaan yang Sering Diajukan

Bahasa apa yang digunakan untuk pengembangan watchOS?

Bahasa utamanya adalah Swift dengan framework SwiftUI. WatchKit di UIKit juga didukung, tetapi Apple merekomendasikan SwiftUI untuk semua proyek baru watchOS. Objective-C hanya digunakan di aplikasi lama yang dirilis sebelum 2019. Sejak watchOS 7, semua contoh Apple secara eksklusif menggunakan SwiftUI.

Apakah iPhone diperlukan untuk menjalankan aplikasi watchOS?

Mulai watchOS 6, Apple Watch dapat menginstal aplikasi langsung dari App Store tanpa iPhone. Namun, banyak fungsi — sinkronisasi data, notifikasi push, geolokasi — memerlukan pemasangan dengan iPhone. Aplikasi yang sepenuhnya otonom dimungkinkan dengan watchOS 9 dan WKRunsIndependently di pengaturan build.

Berapa daya tahan baterai Apple Watch dengan aplikasi aktif?

Daya tahan baterai tipikal Apple Watch Series 9 — hingga 18 jam dalam mode campuran. Dengan penggunaan aplikasi aktif dengan GPS dan pengukur detak jantung — 5-7 jam. watchOS 10 mengoptimalkan konsumsi daya melalui Smart Stack dan BGTaskScheduler, mengurangi aktivitas latar belakang aplikasi hingga 4 kali lipat dibandingkan watchOS 9.

Bagaimana cara mentransfer data antara iPhone dan Apple Watch?

Framework Watch Connectivity menyediakan empat metode: sendMessage (transfer segera), transferUserInfo (latar belakang), transferFile (file hingga 100 MB), dan updateApplicationContext (sinkronisasi status). Semua metode bekerja melalui Bluetooth atau Wi-Fi dengan antrian otomatis saat koneksi hilang.

Sensor apa saja yang tersedia di Apple Watch?

Apple Watch Series 9 dan Ultra 2 mencakup: akselerometer, giroskop, pengukur detak jantung optik dan elektrik, SpO2 (saturasi), sensor suhu pergelangan tangan, barometer, kompas, GPS L1+L5, dan mikrofon. Akses ke sensor — melalui HealthKit dan Core Motion. Data detak jantung dan SpO2 memerlukan izin eksplisit pengguna.

Ringkasan

  • watchOS — sistem operasi Apple untuk jam tangan pintar pada kernel XNU dengan fokus pada efisiensi energi dan integrasi iPhone
  • SwiftUI — framework utama untuk watchOS, menyediakan tata letak deklaratif dan adaptasi otomatis ke ukuran layar
  • watchOS 10 memperkenalkan Smart Stack, Double Tap (S9+), NavigationStack, dan WidgetKit untuk widget
  • Watch Connectivity — satu-satunya saluran komunikasi dengan iPhone melalui Bluetooth/Wi-Fi dengan empat mode transmisi
  • HealthKit menyediakan akses ke sensor Apple Watch: detak jantung, SpO2, suhu, akselerometer, GPS
  • Complications — widget di wajah jam, diimplementasikan melalui CLKComplicationDataSource atau SwiftUI
  • Publikasi memerlukan Apple Developer Program, ukuran hingga 50 MB (seluler), dan kontrol kinerja yang ketat

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