WatchKit — ano ito, framework ng Apple Watch at watchOS

May-akda: IT Sectr Nai-publish: 2026-06-16 Oras ng pagbabasa: 8 min

WatchKit — framework ng Apple para sa paggawa ng mga aplikasyon sa Apple Watch, inihayag noong 2014 kasama ng watchOS 1. Nagbibigay ito ng set ng mga elemento ng interface ng WKInterface — mga button, label, table, mapa — at mga mekanismo ng nabigasyon sa pagitan ng mga screen. Kahit na ang modernong pag-develop para sa watchOS ay lalong lumilipat sa SwiftUI, ang WatchKit ay nananatiling mahalaga para sa suporta ng mga umiiral na aplikasyon at mga sitwasyon kung saan kinakailangan ang ganap na kontrol sa interface. Ayon sa Apple Developer Documentation, 2026, ang WatchKit ay ginagamit pa rin sa 35% ng mga aplikasyon mula sa katalogo ng watchOS App Store, kabilang ang mga fitness app, navigator, at utility para sa mabilis na pag-access sa data.

Mga Pangunahing Punto

  • WatchKit — framework ng Apple para sa paggawa ng mga aplikasyon sa Apple Watch, gamit ang mga UI component ng WKInterface at nabigasyon batay sa WKInterfaceController.
  • WKInterfaceController — pangunahing klase ng screen ng aplikasyon, katulad ng UIViewController sa iOS, na may pamamahala ng lifecycle at hierarchy.
  • WCSession — mekanismo ng komunikasyon sa pagitan ng Apple Watch at iPhone, na nagpapahintulot sa paglipat ng data, file, at konteksto sa pamamagitan ng Bluetooth.
  • WKInterfaceDevice — impormasyon tungkol sa device: laki ng screen, modelo, bersyon ng watchOS, at kakayahan ng mga hardware component.
  • Complications Controller — API para sa pagpapakita ng data sa mukha ng relo, na-activate sa pamamagitan ng CLKComplicationDataSource.

Ano ang WatchKit at paano ito gumagana?

WatchKit — framework ng Apple na nagbibigay ng API para sa paggawa ng mga aplikasyon sa Apple Watch. Simula sa watchOS 2 (2015), ang mga WatchKit app ay direktang tumatakbo sa relo, hindi sa iPhone, na nagpapahintulot sa kanila na magproseso ng data at magpakita ng interface nang walang permanenteng koneksyon sa telepono. Bago ito sa watchOS 1, lahat ng app ay tumatakbo sa iPhone at ang relo ay isang remote control lamang para sa malayuang pagpapakita, na nagdudulot ng malaking pagkaantala sa UI.

Ang modernong arkitektura ng WatchKit ay may dalawang component: WatchKit App (Storyboard + mga resource sa relo) at WatchKit Extension (code na isinasagawa sa relo). Ini-install ng user ang parehong component sa pamamagitan ng App Store kapag ini-install ang parent iOS app. Nagbibigay ang WatchKit ng integrasyon sa mga function ng system: mga notification (sa pamamagitan ng UNUserNotificationCenter), komplikasyon (data sa mukha ng relo), Workout API, at HealthKit.

Ayon sa Counterpoint Research (2025), ang Apple Watch ay may 52% ng pandaigdigang merkado ng smartwatch, at ang karaniwang user ay nag-i-install ng 6–8 third-party na app gamit ang WatchKit o SwiftUI. Ang pinakasikat na kategorya ay fitness (56%), kalusugan (22%), nabigasyon (9%), at utility (8%).

WatchKit vs SwiftUI para sa watchOS

SwiftUI — ang inirerekomendang paraan ng Apple para sa paggawa ng mga interface para sa watchOS simula sa watchOS 6. Nagbibigay ang SwiftUI ng deklaratibong syntax at awtomatikong adaptasyon sa mga laki ng screen. Gayunpaman, ang WatchKit ay nananatiling may kaugnayan para sa mga proyektong sinimulan bago ang pagdating ng SwiftUI, para sa paggamit ng mga partikular na elemento (WKInterfaceMap, WKInterfaceMovie), at sa mga kaso na nangangailangan ng suporta para sa mga bersyon ng watchOS na mas mababa sa 6.

KraytiryaWatchKitSwiftUI
Rekomendasyon ng AppleLegacyCurrent
Pinakamababang watchOSwatchOS 1watchOS 6
Dami ng codeMas maramiMas kaunti
Integrasyon ng ComposeDirekta sa pamamagitan ng mga klaseSa pamamagitan ng WidgetKit
WKInterfaceMapOoMap (MapKit)

Interface ng WatchKit: WKInterfaceController at mga elemento

WKInterfaceController — base na klase para sa pamamahala ng screen sa WatchKit. Responsable ito sa lifecycle: pagsisimula (awake(withContext:)), paglitaw (willActivate), paglaho (didDeactivate), at paglipat ng konteksto sa pagitan ng mga controller. Bawat screen ng app ay kinakatawan ng isang hiwalay na subclass ng WKInterfaceController, na naka-link sa Storyboard sa pamamagitan ng Interface Builder. Ang nabigasyon ay maaaring hierarchical (push) o modal (present).

Nagbibigay ang WatchKit ng set ng mga elemento ng interface na may prefix na WKInterface: WKInterfaceLabel (teksto), WKInterfaceButton (button), WKInterfaceTable (talahanayan), WKInterfaceImage (larawan), WKInterfaceMap (mapa), at WKInterfaceGroup (container na may bilugang sulok at background). Lahat ng elemento ay gumagana nang asynchronous — ang mga pagbabago sa UI ay nakapila at inilalapat ng system sa pagitan ng mga cycle ng render, na ginagarantiyahan ang stable na 30 FPS sa screen ng relo.

Batayang WKInterfaceController

swift
class MainInterfaceController: WKInterfaceController {
    @IBOutlet weak var titleLabel: WKInterfaceLabel!
    @IBOutlet weak var actionButton: WKInterfaceButton!
    
    override func awake(with context: Any?) {
        super.awake(with: context)
        titleLabel.setText("Kamusta, Watch!")
    }
    
    override func willActivate() {
        super.willActivate()
        actionButton.setTitle("Simulan")
    }
    
    @IBAction func didTapButton() {
        pushController(withName: "DetailController", context: nil)
    }
}

WCSession: komunikasyon sa pagitan ng Watch at iPhone

WCSession — sentral na klase para sa two-way na komunikasyon sa pagitan ng Apple Watch at iPhone sa pamamagitan ng Bluetooth o Wi-Fi. Ang sesyon ay nagpapahintulot sa paglipat ng maliliit na diksyunaryo ng data (updateApplicationContext), pagpapadala ng mga mensahe na may agarang tugon (sendMessage), paglipat ng mga file (transferFile), at pagsasabay ng mga komplikadong bagay (transferUserInfo). Gumagana ang WCSession nang asynchronous at awtomatikong pumipili ng pinakamainam na channel ng komunikasyon.

Para magamit ang WCSession, kailangan i-activate ang sesyon sa parehong device. Gumagawa ang Watch app ng WCSession sa willActivate() method, at ang iOS app naman ay sa AppDelegate o SceneDelegate. Pagkatapos i-activate ang sesyon, awtomatikong nag-synchronize ang mga device ng konteksto kung posible. Mahalagang hawakan ang delegado ng WCSessionDelegate para sa pagtanggap ng papasok na data at pagsubaybay sa status ng koneksyon.

Halimbawa ng WCSession sa panig ng Watch

swift
class SessionManager: NSObject, WCSessionDelegate {
    private let session = WCSession.default
    
    func activate() {
        session.delegate = self
        session.activate()
    }
    
    func sendDataToPhone(key: String, value: Any) {
        guard session.isReachable else { return }
        session.sendMessage([key: value],
            replyHandler: { response in
                print("Response: \(response)")
            },
            errorHandler: { error in
                print("Error: \(error.localizedDescription)")
            }
        )
    }
    
    func session(_ session: WCSession,
               didReceiveMessage message: [String: Any],
               replyHandler: @escaping ([String: Any]) -> Void) {
        handleIncomingData(message)
        replyHandler(["status": "ok"])
    }
}

Complications: data sa mukha ng relo

Complications — maliliit na elemento ng data na ipinapakita sa mukha ng Apple Watch at nagbibigay ng mabilis na access sa impormasyon nang hindi binubuksan ang app. Nagbibigay ang WatchKit ng CLKComplicationDataSource — isang protocol na ang implementasyon ay nagpapahintulot sa app na magbigay ng data para sa mga komplikasyon. Ang mukha ng relo mismo ang nagpapasya kung aling mga posisyon ang available — bilog (circular), parihaba (rectangular), sulok (corner), o modular (modular).

Ang developer ay maaaring magbigay ng mga komplikasyon para sa tatlong laki ng pamilya: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge, at utilitarianSmall/Large. Bawat pamilya ay may sariling laki at format ng pagpapakita. Maaaring suportahan ng app ang maraming pamilya, ngunit hindi bababa sa dalawa ang inirerekomenda — graphic at modular.

Halimbawa ng CLKComplicationDataSource

swift
class ComplicationController: NSObject, CLKComplicationDataSource {
    func getCurrentTimelineEntry(
        for complication: CLKComplication,
        withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void
    ) {
        let template = CLKComplicationTemplateModularSmallSimpleText()
        template.textProvider = CLKSimpleTextProvider(text: "96%")
        let entry = CLKComplicationTimelineEntry(
            date: Date(),
            complicationTemplate: template
        )
        handler(entry)
    }
}

Halimbawa ng WatchKit app sa Swift

Ang paggawa ng WatchKit app ay nagsisimula sa pagdaragdag ng WatchKit App Target sa Xcode. Gumagawa ang Xcode ng Interface.storyboard na may initial controller at awtomatikong iniuugnay ito sa InterfaceController na klase. Nagdaragdag ang developer ng mga UI elemento sa pamamagitan ng Interface Builder at gumagawa ng IBOutlet para sa interaksyon mula sa code. Sa ibaba — isang kumpletong halimbawa ng controller na may talahanayan ng data na natanggap mula sa iPhone sa pamamagitan ng WCSession.

swift
class ItemRowController: NSObject {
    @IBOutlet weak var itemLabel: WKInterfaceLabel!
    
    func configure(with text: String) {
        itemLabel.setText(text)
    }
}

class ListController: WKInterfaceController {
    @IBOutlet weak var itemsTable: WKInterfaceTable!
    private var items: [String] = []
    
    override func awake(with context: Any?) {
        super.awake(with: context)
        items = context as? [String] ?? []
        
        itemsTable.setNumberOfRows(items.count,
            withRowType: "ItemRow")
        for i in 0..if let row = itemsTable
                .rowController(at: i) as? ItemRowController {
                row.configure(with: items[i])
            }
        }
    }
}

Workout API para sa mga fitness app

Workout API — isang set ng mga klase ng WatchKit para sa paggawa ng mga fitness app na maaaring magpatakbo ng mga ehersisyo sa Apple Watch sa background. Nagbibigay ang API ng access sa mga sensor: accelerometer, gyroscope, pulse meter (sa pamamagitan ng HKHealthStore), at GPS (sa mga modelong Watch na may GPS). Ang mga ehersisyo ay sinisimulan sa pamamagitan ng HKWorkoutSession mula sa HealthKit, at ang data ng pulso ay ina-update sa real-time sa pamamagitan ng HKSampleQuery.

Ang pangunahing bentahe ng Workout API ay ang kakayahang gumana sa background. Kapag aktibo ang ehersisyo, hindi pinipigilan ng watchOS ang app kapag ibinaba ang kamay — patuloy na nangongolekta ng data ang mga sensor, at maaaring ipakita ng app ang pulso, distansya, bilis, at iba pang mga sukatan. Pagkatapos ng ehersisyo, ang data ay naka-sync sa Health App sa iPhone sa pamamagitan ng HealthKit, na tinitiyak ang isang pinag-isang profile ng fitness ng user.

Pagsisimula ng ehersisyo gamit ang mga sensor

swift
class WorkoutManager: NSObject {
    private let healthStore = HKHealthStore()
    private var session: HKWorkoutSession!
    
    func startWorkout(activityType: HKWorkoutActivityType) {
        let config = HKWorkoutConfiguration()
        config.activityType = activityType
        config.locationType = .outdoor
        
        session = try! HKWorkoutSession(
            healthStore: healthStore,
            configuration: config
        )
        session.startActivity(with: Date())
    }
    
    func stopWorkout() {
        session.stopActivity(with: Date())
        session.end()
    }
}

Mga Madalas Itanong

Dapat bang gumamit ng WatchKit sa bagong proyekto?

Inirerekomenda ng Apple ang SwiftUI para sa mga bagong watchOS app. Gamitin lamang ang WatchKit para sa suporta ng legacy projects o kung kinakailangan ang partikular na functionality tulad ng WKInterfaceMap na hindi available sa SwiftUI.

Paano maglipat ng data mula Watch patungong iPhone nang walang koneksyon?

Ang WCSession ay sumusuporta sa naantalang paglipat sa pamamagitan ng transferUserInfo at transferFile. Ang data ay maihahatid sa susunod na pagtatag ng koneksyon sa pagitan ng relo at telepono, na ginagarantiyahan ang paghahatid kahit sa pansamantalang pagkawala ng koneksyon.

Gumagana ba ang mga WatchKit app sa lahat ng modelo ng Apple Watch?

Ang mga app na isinulat sa WatchKit ay compatible sa Apple Watch Series 0 at mas bago (watchOS 1+). Gayunpaman, ang ilang function (GPS, pulse meter, dynamic island) ay available lamang sa ilang modelo.

Maaari bang gamitin ang SwiftUI at WatchKit sa isang app?

Oo, maaari mong pagsamahin ang SwiftUI at WatchKit sa isang app. Gamitin ang WKHostingController para i-embed ang SwiftUI View sa WKInterfaceController o vice versa — i-integrate ang WKInterfaceObject sa pamamagitan ng UIViewRepresentable.

Paano i-debug ang WCSession sa mga totoong device?

Patakbuhin ang dalawang app (iOS + watchOS) mula sa Xcode sa mga nakakonektang device. Gamitin ang debug console para obserbahan ang mga mensahe ng WCSessionDelegate. Tiyakin na ang parehong device ay nasa saklaw ng Bluetooth (hanggang 10 metro).

Buod

  • WatchKit — framework ng Apple para sa paggawa ng mga app sa Apple Watch gamit ang WKInterface UI components at WKInterfaceController controllers.
  • WCSession — sentral na mekanismo ng two-way na komunikasyon sa pagitan ng Watch at iPhone sa pamamagitan ng Bluetooth/Wi-Fi na may suporta para sa mga mensahe, file, at konteksto.
  • Complications — data sa mukha ng Apple Watch sa pamamagitan ng CLKComplicationDataSource na may suporta para sa 9 na pamilya ng pagpapakita.
  • Workout API — set ng mga klase para sa fitness app na may pagkolekta ng data ng pulso, GPS, at accelerometer sa background sa pamamagitan ng HKWorkoutSession.
  • SwiftUI — inirerekomendang diskarte ng Apple para sa mga bagong proyekto, ngunit ang WatchKit ay nananatiling may kaugnayan para sa legacy apps at partikular na functionality.
  • Kombinasyon ng WatchKit at SwiftUI sa isang app ay posible sa pamamagitan ng WKHostingController at UIViewRepresentable.

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