watchOS: mga batayan ng pag-develop para sa Apple Watch gamit ang SwiftUI

May-akda: IT Sectr Nai-publish: 2026-02-07 Oras ng pagbabasa: 12 min

watchOS — ang operating system ng Apple para sa Apple Watch, unang inilabas noong 2015 kasama ng mga unang relo. Ang pag-develop ng mga application para sa watchOS ay ginagawa sa Swift gamit ang SwiftUI at WatchKit. Mga tampok: maliit na parihabang screen, limitadong konsumo ng enerhiya mula sa 0.3 Wh na baterya, at malapit na integrasyon sa iPhone sa pamamagitan ng Bluetooth. Ayon sa datos ng Counterpoint Research, ang Apple Watch ay mayroong higit sa 30% ng pandaigdigang merkado ng mga smartwatch.

Mga Pangunahing Punto

  • watchOS — OS para sa Apple Watch sa XNU kernel na nakatuon sa mababang konsumo ng enerhiya
  • SwiftUI — pangunahing framework para sa pag-develop ng mga interface ng watchOS application
  • Watch Connectivity — mekanismo ng pagpapalitan ng data sa pagitan ng Apple Watch at iPhone
  • Smart Stack — matalinong stack ng mga widget, ipinakilala sa watchOS 10
  • HealthKit — framework para sa access sa mga sensor: pulso, SpO2, temperatura, accelerometer

Ano ang watchOS?

watchOS — ang operating system para sa mga smartwatch ng Apple, batay sa XNU Darwin kernel. Unang inilabas noong Abril 24, 2015 kasama ang Apple Watch Series 0. Ang sistema ay binuo sa parehong arkitektura ng iOS, ngunit na-optimize para sa maliit na display (1.5 hanggang 1.9 pulgada), limitadong memorya (hanggang 1 GB RAM sa Series 9), at minimal na konsumo ng enerhiya.

Ayon sa StatCounter (2026), ang watchOS ay mayroong humigit-kumulang 55% ng merkado ng mga operating system para sa mga smartwatch, na higit sa Wear OS at proprietary system ng mga Chinese manufacturer. Taun-taon naglalabas ang Apple ng mga pangunahing update sa watchOS, sinusuportahan ang mga relo hanggang 5 taon mula sa paglabas.

Ang pangunahing tampok ng watchOS — pag-asa sa iPhone. Karamihan sa mga application ay gumagamit ng Watch Connectivity para sa pag-sync ng data. Simula sa watchOS 6, ang mga relo ay maaaring mag-install ng mga application nang direkta mula sa App Store, ngunit ang buong awtonomiya nang walang iPhone ay sinusuportahan lamang mula sa watchOS 9.

Kasaysayan ng mga bersyon ng watchOS

Ang unang bersyon na Watch OS 1.0 ay hindi sumuporta sa mga third-party na application — tanging mga pre-install na Apple application. watchOS 2 (2015) ay nagbukas ng SDK para sa mga developer. watchOS 3 (2016) ay nagpabilis ng paglunsad ng mga application ng 7 beses. watchOS 6 (2019) ay nagpakilala ng App Store sa relo. watchOS 9 (2022) ay nagdagdag ng mga gamot at pinahusay na pagsubaybay sa pagtulog. watchOS 10 (2023) ay naging pinakamalaking update ng interface mula nang ilabas.

Bersyon ng watchOSTaonPangunahing Inobasyon
Watch OS 12015Unang bersyon, tanging native na Apple application
watchOS 22015Bukas na SDK, third-party na application, Watch Connectivity
watchOS 32016Instant na paglunsad ng application, Dock, Scribble
watchOS 62019App Store sa relo, Cycle Tracking, Noise app
watchOS 92022Mga gamot, yugto ng pagtulog, pinahusay na kasama sa pagtakbo
watchOS 102023Smart Stack, Double Tap, mga bagong mukha ng relo

Arkitektura ng watchOS

Ang arkitektura ng watchOS ay binubuo ng tatlong antas na naghihiwalay ng hardware mula sa mga application ng user. Hindi tulad ng iOS, ang watchOS ay gumagamit ng component approach: ang application ay binubuo ng dalawang target — extension at host sa iPhone.

Kernel at mga serbisyo ng system

Ang ibabang antas — binagong XNU kernel na may mga driver para sa S4/S5/S6/S7/S8/S9 Apple chips. Ang Apple Watch Series 9 ay gumagamit ng S9 SiP na may 5.6 bilyong transistor at 4-core Neural Engine. Ang mga serbisyo ng system ay kinabibilangan ng Core Bluetooth, Watch Connectivity, HealthKit, at Core Motion. Lahat ng background task ay pinamamahalaan ng BGTaskScheduler — system scheduler na nag-o-optimize ng konsumo ng enerhiya.

WatchKit — layer ng application

WatchKit — framework para sa paggawa ng mga interface ng watchOS application. Kabilang dito ang WKInterfaceController, WKInterfaceGroup, WKInterfaceLabel, at WKInterfaceButton. Mula noong watchOS 6, inirerekomenda ng Apple ang SwiftUI sa halip na WatchKit. Ang SwiftUI ay nagbibigay ng parehong kakayahan, ngunit may declarative syntax at awtomatikong adaptasyon sa laki ng screen: 38 mm (272×340), 42 mm (312×390), 40 mm (324×394), 44 mm (368×448), 45 mm (396×484), 49 mm (410×502 sa Apple Watch Ultra).

Mga background mode at konsumo ng enerhiya

Nililimitahan ng watchOS ang background work ng mga application para makatipid ng baterya. Mga available na background mode: Workout (ehersisyo), HealthKit (pagmonitor ng kalusugan), Location (geolokasyon), Audio (audio player), at Complication (data sa mukha ng relo). Bawat mode ay nangangailangan ng hiwalay na capability sa entitlements. Typical na konsumo ng enerhiya: aktibong application — 50-80 mA, background mode — 5-15 mA, Standby — 1-3 mA.

swift
import BackgroundTasks
import WatchKit

/// Pagpaplano ng background data update sa 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)
            }
        }
    }
}

/// Pagrehistro ng background task sa 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 ay ginagarantiyahan na ang mga background task ay isinasagawa sa mga optimal na sandali — kapag ang relo ay nasa charger at konektado sa iPhone. Pinoproseso ng WKExtensionDelegate ang mga papasok na background task at ina-update ang data sa mukha ng relo. Ang ComplicationController.reloadComplications ay nag-a-update ng mga widget sa napiling mukha ng relo.

watchOS 10: Smart Stack at Double Tap

watchOS 10 — ang pinakamalaking update ng interface sa kasaysayan ng platform, inilabas noong Setyembre 2023. Ang sistema ay lumipat mula sa hierarchical navigation patungo sa content-oriented navigation: ang pangunahing screen ay naging Smart Stack — matalinong stack ng mga widget na pumalit sa app dock.

Smart Stack

Smart Stack — vertical na listahan ng mga widget na ipinapakita sa ilalim ng mukha ng relo. Ang mga widget ay niraranggo ayon sa konteksto: sa umaga ay ipinapakita ang panahon at kalendaryo, sa araw — aktibidad at mga paalala, sa gabi — meditation at paghahanda para sa pagtulog. Maaaring magdagdag ang developer ng custom na widget sa pamamagitan ng WidgetKit para sa watchOS, gamit ang parehong API tulad ng para sa iOS 17.

Double Tap

Double Tap — kilos ng pagsasama ng hintuturo at hinlalaki, na kinikilala ng accelerometer at gyroscope nang hindi hinahawakan ang screen. Sa Apple Watch Series 9 at Ultra 2, ang kilos ay isinasagawa sa hardware level sa pamamagitan ng Neural Engine. Natatanggap ng developer ang event sa pamamagitan ng UIDoubleTapGestureRecognizer o sa pamamagitan ng SwiftUI modifier na .onTapGesture(count: 2). Ang kilos ay hindi nangangailangan ng kalibrasyon at gumagana sa anumang oryentasyon ng kamay.

Mga bagong API para sa mga developer

Ipinakilala ng watchOS 10 ang: SwiftUI Animation na may suporta para sa Spring at Keyframe animation, MapKit para sa pagpapakita ng mga mapa sa relo, VideoPlayer para sa pag-play ng maiikling video (hanggang 30 segundo), pinahusay na VoiceOver na may mga kilos, at bagong navigation paradigm na NavigationStack sa halip na NavigationView.

APILayuninAvailable mula noong
WidgetKit for watchOSWidget para sa Smart StackwatchOS 10
UIDoubleTapGestureKilos na Double TapwatchOS 10 (S9+)
MapKitPagpapakita ng mapa sa relowatchOS 10
NavigationStackBagong navigation paradigmwatchOS 10
SwiftUI KeyframeFrame-by-frame animationwatchOS 10

SwiftUI para sa Apple Watch

SwiftUI — pangunahing framework para sa pag-develop ng interface sa watchOS. Inirerekomenda ng Apple ang SwiftUI para sa lahat ng bagong proyekto simula sa watchOS 7. Ang SwiftUI para sa mga relo ay gumagamit ng parehong prinsipyo tulad ng para sa iOS, ngunit may mga modifier at component na partikular sa watchOS.

Mga component ng SwiftUI na partikular sa watchOS

Ang SwiftUI para sa watchOS ay kinabibilangan ng: TabView na may page-style para sa pag-swipe sa pagitan ng mga screen, DigitalCrownRotation para sa pagproseso ng pag-ikot ng korona, SceneStorage para sa pag-save ng estado sa pagitan ng mga paglunsad, WKNotificationScene para sa custom na notification, at ComplicationDescriptor para sa data sa mukha ng relo.

swift
import SwiftUI
import HealthKit

/// watchOS application para sa pagmonitor ng pulso
@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("Pulso", systemImage: "heart.fill") }

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

            SettingsView()
                .tabItem { Label("Mga Setting", 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)
        }
    }
}

Ang application na HeartMonitorApp ay nagpapakita ng tipikal na istraktura ng isang watchOS application sa SwiftUI: TabView na may page-style para sa pag-swipe sa pagitan ng mga screen, integrasyon sa HealthKit para sa real-time na pagbasa ng pulso, WKNotificationScene para sa pagproseso ng mga notification. Ang SymbolEffect na may pulse animation ay gumagamit ng hardware acceleration ng Neural Engine para sa maayos na animation nang walang CPU load.

Digital Crown at mga kilos

Digital Crown — ang korona sa side panel ng Apple Watch. Ang SwiftUI ay nagbibigay ng DigitalCrownRotation para sa pagtali ng halaga sa pag-ikot ng korona. Ang modifier ay tumatanggap ng binding, range, at step. Mga kilos: tap (pagpindot), longPress (mahabang pagpindot), swipe (pag-swipe), at pan (pag-drag) — lahat ay standard para sa SwiftUI at inangkop sa laki ng screen ng relo.

WatchKit at mga component ng watchOS application

WatchKit — orihinal na framework para sa watchOS na gumagamit ng UIKit approach. Kahit na inirerekomenda ng Apple ang SwiftUI, ang WatchKit ay nananatiling may kaugnayan para sa mga lumang proyekto at partikular na gawain: kumplikadong animation sa WKInterfaceGroup at integrasyon sa SiriKit.

Istraktura ng watchOS application

Ang application para sa watchOS ay binubuo ng dalawang target: WatchKit Extension (lohika at interface) at iOS Companion App (mga setting at pag-sync). Mula sa Xcode 15, posible ang paggawa ng standalone application nang walang iOS companion. Ang interface ay inilalarawan sa Interface.storyboard (WatchKit) o programmatically sa pamamagitan ng SwiftUI.

ComponentWatchKitSwiftUI
ScreenWKInterfaceControllerView
ButtonWKInterfaceButtonButton
TalahanayanWKInterfaceTableList
GrupoWKInterfaceGroupVStack / HStack
LarawanWKInterfaceImageImage / AsyncImage
LabelWKInterfaceLabelText
MapaWKInterfaceMapMap (watchOS 10+)
Mukha ng reloCLKComplicationDataSourceComplicationDescriptor

Complications — data sa mukha ng relo

Complication — widget na nagpapakita ng data sa mukha ng Apple Watch. Ang developer ay nag-i-implement ng CLKComplicationDataSource protocol, na nagbibigay ng mga template para sa iba't ibang uri ng mukha ng relo (circular, rectangular, modular, extraLarge). Ang watchOS 10 ay sumusuporta sa ComplicationDescriptor — pinasimpleng API para sa SwiftUI. Ang data ay ina-update sa pamamagitan ng Background Tasks na may panahon na hanggang 30 minuto.

Integrasyon sa iPhone sa pamamagitan ng Watch Connectivity

Watch Connectivity — framework para sa pagpapalitan ng data sa pagitan ng Apple Watch at iPhone sa pamamagitan ng Bluetooth o Wi-Fi. Ang tanging paraan ng komunikasyon sa pagitan ng mga naka-pair na device. Ang WCSession — ang sentral na klase na namamahala sa session. Ang iOS application at watchOS extension ay dapat mag-implement ng WCSessionDelegate.

Mga paraan ng pagpapadala ng data

Ang Watch Connectivity ay nagbibigay ng apat na paraan ng pagpapadala ng data: sendMessage — agarang pagpapadala na may kumpirmasyon (gumagana lamang kapag parehong aktibo ang mga application), transferUserInfo — background delivery ng diksyunaryo ng data, transferFile — pagpapadala ng file na may metadata, updateApplicationContext — pag-sync ng shared state. Lahat ng paraan ay ginagarantiyahan ang paghahatid kapag naibalik ang koneksyon.

swift
import WatchConnectivity

/// Manager ng pag-sync sa pagitan ng iPhone at 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: — Pagpapadala ng data mula sa iPhone papunta sa relo
    func sendWorkoutData(_ data: [String: Any]) {
        guard session.isReachable else {
            // Kung ang relo ay hindi available — i-save sa konteksto
            try? session.updateApplicationContext(data)
            return
        }
        session.sendMessage(data, replyHandler: nil) { error in
            print("Send error: \(error.localizedDescription)")
        }
    }

    // MARK: — Pagtanggap ng data sa relo
    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)")
    }

    // Hindi kinakailangan sa watchOS, ngunit mandatory para sa protocol
    func sessionDidBecomeInactive(_ session: WCSession) {}
    func sessionDidDeactivate(_ session: WCSession) {
        session.activate()
    }
}

ConnectivityManager ay nag-i-implement ng singleton para sa pagtatrabaho sa WCSession. Sinusuri ng sendWorkoutData ang isReachable: kung ang relo ay aktibo, ang data ay agad na ipinapadala sa pamamagitan ng sendMessage; kung hindi — ini-save sa applicationContext para sa ipinagpaliban na paghahatid. Pinoproseso ng onReceiveMessage sa panig ng receiver ang mga papasok na mensahe at nag-aabiso sa application sa pamamagitan ng NotificationCenter.

Pagpapalitan ng file at pag-sync

Ang transferFile ay nagpapahintulot ng pagpapadala ng malalaking halaga ng data: mga larawan, audio file, archive. Maximum na laki ng file — 100 MB. Ang mga file ay ini-save sa Inbox directory sa receiving device. Ang transferUserInfo ay angkop para sa JSON data hanggang 100 KB. Lahat ng paraan ay gumagana sa background: kung ang device ay hindi available, ang transmisyon ay naka-queue at awtomatikong magpapatuloy kapag naibalik ang koneksyon.

Pag-publish ng mga watchOS application

Pag-publish ng watchOS application ay sumusunod sa parehong patakaran ng iOS: kinakailangan ang subscription sa Apple Developer Program ($99/taon) at pagdaan sa moderation ng App Review. Ang application ay ina-upload sa App Store Connect bilang bahagi ng iOS application o bilang standalone application.

Pag-build at pamamahagi

Ang watchOS application ay maaaring ihatid sa dalawang paraan: bilang built-in na extension ng iOS application (iOS app bundle ay naglalaman ng watchOS .app) o bilang standalone application (nada-download at gumagana nang walang iPhone). Para sa standalone mode, kinakailangan ang WKRunsIndependently = YES sa Info.plist. Ang laki ng watchOS application ay limitado sa 50 MB para sa pag-download sa pamamagitan ng cellular network.

Mga kinakailangan ng App Review

Mga espesyal na kinakailangan para sa watchOS: ang application ay dapat gumana nang tama nang walang aktibong iPhone (kung idineklara bilang standalone), ang interface ay dapat mabasa nang walang pagpapalaki, lahat ng interactive na elemento — hindi bababa sa 44 na puntos sa laki. Ipinagbabawal ang mga application na duplicate ang functionality ng built-in (halimbawa, heart rate monitor na walang karagdagang halaga).

KinakailanganPaglalarawan
Laki ng applicationHanggang 50 MB para sa cellular download, hanggang 4 GB sa pamamagitan ng Wi-Fi
Standalone modeWKRunsIndependently = YES sa Info.plist
Touch targetMinimum 44 pt para sa lahat ng interactive na elemento
SeguridadAng HealthKit data ay hindi maaaring ipadala sa server nang walang pahintulot
PerformancePag-lunsad ng application hindi hihigit sa 5 segundo

Mga Madalas Itanong

Anong mga wika ang ginagamit para sa pag-develop ng watchOS?

Ang pangunahing wika ay Swift na may SwiftUI framework. Ang WatchKit sa UIKit ay sinusuportahan din, ngunit inirerekomenda ng Apple ang SwiftUI para sa lahat ng bagong watchOS project. Ang Objective-C ay ginagamit lamang sa mga lumang application na inilabas bago ang 2019. Mula sa watchOS 7, lahat ng halimbawa ng Apple ay eksklusibong gumagamit ng SwiftUI.

Kailangan ba ng iPhone para gumana ang watchOS application?

Simula sa watchOS 6, ang Apple Watch ay maaaring mag-install ng mga application nang direkta mula sa App Store nang walang iPhone. Gayunpaman, maraming function — pag-sync ng data, push notification, geolokasyon — ay nangangailangan ng pagpares sa iPhone. Ang ganap na autonomous na application ay posible sa watchOS 9 at WKRunsIndependently sa mga setting ng build.

Gaano katagal ang baterya ng Apple Watch na may aktibong application?

Typical na buhay ng baterya ng Apple Watch Series 9 — hanggang 18 oras sa mixed mode. Sa aktibong paggamit ng application na may GPS at heart rate monitor — 5-7 oras. Ino-optimize ng watchOS 10 ang konsumo ng enerhiya sa pamamagitan ng Smart Stack at BGTaskScheduler, na binabawasan ang background activity ng mga application ng hanggang 4 na beses kumpara sa watchOS 9.

Paano maglipat ng data sa pagitan ng iPhone at Apple Watch?

Ang Watch Connectivity framework ay nagbibigay ng apat na paraan: sendMessage (agarang paglipat), transferUserInfo (background), transferFile (mga file hanggang 100 MB), at updateApplicationContext (pag-sync ng estado). Lahat ng paraan ay gumagana sa pamamagitan ng Bluetooth o Wi-Fi na may awtomatikong pag-queue kapag nawala ang koneksyon.

Anong mga sensor ang available sa Apple Watch?

Ang Apple Watch Series 9 at Ultra 2 ay kinabibilangan ng: accelerometer, gyroscope, optical at electric heart rate monitor, SpO2 (saturation), wrist temperature sensor, barometer, compass, GPS L1+L5, at mikropono. Access sa mga sensor — sa pamamagitan ng HealthKit at Core Motion. Ang data ng pulso at SpO2 ay nangangailangan ng tahasang pahintulot ng user.

Buod

  • watchOS — operating system ng Apple para sa mga smartwatch sa XNU kernel na may pokus sa energy efficiency at integrasyon sa iPhone
  • SwiftUI — pangunahing framework para sa watchOS, na nagbibigay ng declarative layout at awtomatikong adaptasyon sa laki ng screen
  • watchOS 10 ay nagpakilala ng Smart Stack, Double Tap (S9+), NavigationStack, at WidgetKit para sa mga widget
  • Watch Connectivity — tanging channel ng komunikasyon sa iPhone sa pamamagitan ng Bluetooth/Wi-Fi na may apat na mode ng pagpapadala
  • HealthKit ay nagbibigay ng access sa mga sensor ng Apple Watch: pulso, SpO2, temperatura, accelerometer, GPS
  • Complications — mga widget sa mukha ng relo, na implementado sa pamamagitan ng CLKComplicationDataSource o SwiftUI
  • Pag-publish ay nangangailangan ng Apple Developer Program, laki hanggang 50 MB (cellular), at mahigpit na kontrol ng performance

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din