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 — 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.
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 watchOS | Tahun | Inovasi Utama |
|---|---|---|
| Watch OS 1 | 2015 | Versi pertama, hanya aplikasi native Apple |
| watchOS 2 | 2015 | SDK terbuka, aplikasi pihak ketiga, Watch Connectivity |
| watchOS 3 | 2016 | Peluncuran aplikasi instan, Dock, Scribble |
| watchOS 6 | 2019 | App Store di jam tangan, Cycle Tracking, Noise app |
| watchOS 9 | 2022 | Obat-obatan, fase tidur, pendamping lari yang ditingkatkan |
| watchOS 10 | 2023 | Smart Stack, Double Tap, wajah jam baru |
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.
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 — 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).
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.
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 — 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 — 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 — 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.
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.
| API | Tujuan | Tersedia sejak |
|---|---|---|
| WidgetKit for watchOS | Widget untuk Smart Stack | watchOS 10 |
| UIDoubleTapGesture | Gerakan Double Tap | watchOS 10 (S9+) |
| MapKit | Menampilkan peta di jam tangan | watchOS 10 |
| NavigationStack | Paradigma navigasi baru | watchOS 10 |
| SwiftUI Keyframe | Animasi bingkai | watchOS 10 |
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.
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.
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 — 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 — 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.
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.
| Komponen | WatchKit | SwiftUI |
|---|---|---|
| Layar | WKInterfaceController | View |
| Tombol | WKInterfaceButton | Button |
| Tabel | WKInterfaceTable | List |
| Grup | WKInterfaceGroup | VStack / HStack |
| Gambar | WKInterfaceImage | Image / AsyncImage |
| Label | WKInterfaceLabel | Text |
| Peta | WKInterfaceMap | Map (watchOS 10+) |
| Wajah jam | CLKComplicationDataSource | ComplicationDescriptor |
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.
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.
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.
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.
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 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.
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 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.
| Persyaratan | Deskripsi |
|---|---|
| Ukuran aplikasi | Hingga 50 MB untuk unduhan seluler, hingga 4 GB melalui Wi-Fi |
| Mode standalone | WKRunsIndependently = YES di Info.plist |
| Target sentuhan | Minimum 44 pt untuk semua elemen interaktif |
| Keamanan | Data HealthKit tidak dapat dikirim ke server tanpa persetujuan |
| Kinerja | Peluncuran aplikasi tidak lebih dari 5 detik |
Pertanyaan yang Sering Diajukan
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.
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.
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.
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.
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
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.
Baca juga