WatchKit — mi ez, az Apple Watch és watchOS keretrendszere

Szerző: IT Sectr Megjelenés: 2026-06-16 Olvasási idő: 8 perc

WatchKit — az Apple keretrendszere Apple Watch alkalmazások készítéséhez, amelyet 2014-ben jelentettek be a watchOS 1-gyel együtt. WKInterface felületelemek — gombok, címkék, táblázatok, térképek — és navigációs mechanizmusok készletét biztosítja a képernyők között. Annak ellenére, hogy a modern watchOS fejlesztés egyre inkább áttér a SwiftUI-ra, a WatchKit továbbra is fontos a meglévő alkalmazások támogatásához és azokhoz a forgatókönyvekhez, ahol teljes felügyeletre van szükség a felület felett. A Apple Developer Documentation, 2026 szerint a WatchKit-et továbbra is használják a watchOS App Store katalógusában található alkalmazások 35%-ában, beleértve a fitneszalkalmazásokat, navigátorokat és gyors adatelérési segédprogramokat.

Főbb pontok

  • WatchKit — az Apple keretrendszere Apple Watch alkalmazások készítéséhez, WKInterface UI komponenseket és WKInterfaceController alapú navigációt használ.
  • WKInterfaceController — az alkalmazásképernyő fő osztálya, hasonló az iOS UIViewController-hez, életciklus-kezeléssel és hierarchiával.
  • WCSession — kommunikációs mechanizmus az Apple Watch és iPhone között, amely lehetővé teszi adatok, fájlok és kontextus átvitelét Bluetooth-on keresztül.
  • WKInterfaceDevice — információ az eszközről: képernyőméret, modell, watchOS verzió és hardverkomponensek képességei.
  • Complications Controller — API az adatok óralapon történő megjelenítéséhez, a CLKComplicationDataSource segítségével aktiválva.

Mi az a WatchKit és hogyan működik?

WatchKit — az Apple keretrendszere, amely API-t biztosít Apple Watch alkalmazások készítéséhez. A watchOS 2-től (2015) kezdve a WatchKit alkalmazások közvetlenül az órán futnak, nem az iPhone-on, ami lehetővé teszi számukra az adatok feldolgozását és a felület megjelenítését állandó telefonkapcsolat nélkül. Ezt megelőzően a watchOS 1-ben minden alkalmazás az iPhone-on futott, és az óra csak egy távirányító volt a távoli megjelenítéshez, ami jelentős UI-késleltetéseket okozott.

A modern WatchKit architektúra két komponenst tartalmaz: WatchKit App (Storyboard + erőforrások az órán) és WatchKit Extension (az órán végrehajtott kód). A felhasználó mindkét komponenst az App Store-on keresztül telepíti a szülő iOS alkalmazás telepítésekor. A WatchKit integrációt biztosít a rendszerfunkciókkal: értesítések (UNUserNotificationCenter segítségével), komplikációk (adatok az óralapon), Workout API és HealthKit.

A Counterpoint Research (2025) szerint az Apple Watch az okosórák globális piacának 52%-át birtokolja, és az átlagos felhasználó 6–8 harmadik féltől származó alkalmazást telepít WatchKit vagy SwiftUI használatával. A legnépszerűbb kategóriák a fitnesz (56%), egészség (22%), navigáció (9%) és segédprogramok (8%).

WatchKit vs SwiftUI watchOS rendszerhez

SwiftUI — az Apple által ajánlott módszer a watchOS felületek készítéséhez a watchOS 6-tól kezdve. A SwiftUI deklaratív szintaxist és automatikus alkalmazkodást biztosít a képernyőméretekhez. Azonban a WatchKit továbbra is releváns a SwiftUI megjelenése előtt elindított projektekhez, specifikus elemek (WKInterfaceMap, WKInterfaceMovie) használatához, és olyan esetekben, ahol a watchOS 6-nál alacsonyabb verziók támogatása szükséges.

SzempontWatchKitSwiftUI
Apple ajánlásLegacyCurrent
Minimális watchOSwatchOS 1watchOS 6
Kód mennyiségeTöbbKevesebb
Compose integrációKözvetlenül osztályokon keresztülWidgetKiten keresztül
WKInterfaceMapIgenMap (MapKit)

WatchKit felület: WKInterfaceController és elemek

WKInterfaceController — a képernyő kezelésének alaposztálya a WatchKitben. Felelős az életciklusért: inicializálás (awake(withContext:)), megjelenés (willActivate), eltűnés (didDeactivate) és kontextus átadása a vezérlők között. Az alkalmazás minden képernyőjét egy külön WKInterfaceController alosztály képviseli, amely az Interface Builderen keresztül kapcsolódik a Storyboardhoz. A navigáció lehet hierarchikus (push) vagy modális (present).

A WatchKit WKInterface előtagú felületelemek készletét biztosítja: WKInterfaceLabel (szöveg), WKInterfaceButton (gomb), WKInterfaceTable (táblázat), WKInterfaceImage (kép), WKInterfaceMap (térkép) és WKInterfaceGroup (konténer lekerekítésekkel és háttérrel). Minden elem aszinkron módon működik — a UI-változtatások sorba kerülnek, és a rendszer a renderelési ciklusok között alkalmazza őket, ami stabil 30 FPS-t garantál az óra képernyőjén.

Alap 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("Helló, Watch!")
    }
    
    override func willActivate() {
        super.willActivate()
        actionButton.setTitle("Indítás")
    }
    
    @IBAction func didTapButton() {
        pushController(withName: "DetailController", context: nil)
    }
}

WCSession: kommunikáció Watch és iPhone között

WCSession — a központi osztály a kétirányú kommunikációhoz az Apple Watch és iPhone között Bluetooth-on vagy Wi-Fi-n keresztül. A munkamenet lehetővé teszi kis adatszótárak átvitelét (updateApplicationContext), azonnali választ igénylő üzenetek küldését (sendMessage), fájlok átvitelét (transferFile) és összetett objektumok szinkronizálását (transferUserInfo). A WCSession aszinkron módon működik, és automatikusan kiválasztja az optimális kommunikációs csatornát.

A WCSession használatához aktiválni kell a munkamenetet mindkét eszközön. A Watch alkalmazás a willActivate() metódusban hozza létre a WCSession-t, az iOS alkalmazás pedig az AppDelegate-ben vagy SceneDelegate-ben. A munkamenet aktiválása után az eszközök automatikusan szinkronizálják a kontextust, amikor lehetséges. Fontos a WCSessionDelegate kezelése a bejövő adatok fogadásához és a kapcsolat állapotának nyomon követéséhez.

Példa WCSession használatra a Watch oldalon

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: adatok az óralapon

Complications — kis adatelemek, amelyek az Apple Watch óralapján jelennek meg, és gyors hozzáférést biztosítanak az információkhoz az alkalmazás megnyitása nélkül. A WatchKit CLKComplicationDataSource protokollt biztosít, amelynek implementációja lehetővé teszi az alkalmazás számára, hogy adatokat szolgáltasson a komplikációkhoz. Az óralap maga dönti el, mely pozíciók érhetők el — kerek (circular), téglalap alakú (rectangular), sarok (corner) vagy moduláris (modular).

A fejlesztő három méretcsaládhoz biztosíthat komplikációkat: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge és utilitarianSmall/Large. Minden családnak saját méretei és megjelenítési formátuma van. Az alkalmazás több családot is támogathat, de legalább kettő ajánlott — grafikus és moduláris.

Példa 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)
    }
}

Példa WatchKit alkalmazásra Swiftben

A WatchKit alkalmazás létrehozása a WatchKit App Target Xcode-hoz történő hozzáadásával kezdődik. Az Xcode létrehoz egy Interface.storyboard fájlt egy kezdeti vezérlővel, és automatikusan összekapcsolja az InterfaceController osztállyal. A fejlesztő UI elemeket ad hozzá az Interface Builder segítségével, és IBOutlet-et hoz létre a kódból való interakcióhoz. Lent — egy teljes példa egy vezérlőre, amely az iPhone-ról WCSession segítségével kapott adatok táblázatát tartalmazza.

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 fitneszalkalmazásokhoz

Workout API — WatchKit osztályok készlete fitneszalkalmazások létrehozásához, amelyek a háttérben is futtathatnak edzéseket az Apple Watch-on. Az API hozzáférést biztosít az érzékelőkhöz: gyorsulásmérő, giroszkóp, pulzusmérő (HKHealthStore segítségével) és GPS (GPS-szel rendelkező Watch modelleken). Az edzések a HealthKit HKWorkoutSession segítségével indulnak, a pulzusadatok pedig valós időben frissülnek a HKSampleQuery segítségével.

A Workout API legfőbb előnye a háttérben való munkavégzés képessége. Amikor egy edzés aktív, a watchOS nem függeszti fel az alkalmazást a kéz leengedésekor — az érzékelők tovább gyűjtik az adatokat, és az alkalmazás megjelenítheti a pulzust, távolságot, tempót és egyéb mérőszámokat. Az edzés befejezése után az adatok szinkronizálódnak az iPhone Health alkalmazásával a HealthKit segítségével, ami egységes fitneszprofilt biztosít a felhasználó számára.

Edzés indítása érzékelőkkel

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()
    }
}

Gyakran Ismételt Kérdések

Érdemes WatchKit-et használni egy új projektben?

Az Apple a SwiftUI-t ajánlja új watchOS alkalmazásokhoz. Csak akkor használj WatchKit-et, ha legacy projekteket támogatsz, vagy ha olyan specifikus funkcióra van szükség, mint a WKInterfaceMap, amely nem érhető el a SwiftUI-ban.

Hogyan lehet adatokat küldeni a Watch-ról iPhone-ra kapcsolat nélkül?

A WCSession támogatja a késleltetett átvitelt a transferUserInfo és transferFile segítségével. Az adatok a következő kapcsolat létrejöttekor kerülnek kézbesítésre az óra és a telefon között, ami garantálja a kézbesítést még átmeneti kapcsolatvesztés esetén is.

Működnek a WatchKit alkalmazások az Apple Watch összes modelljén?

A WatchKit-ben írt alkalmazások kompatibilisek az Apple Watch Series 0 és újabb modellekkel (watchOS 1+). Azonban bizonyos funkciók (GPS, pulzusmérő, dinamikus sziget) csak bizonyos modelleken érhetők el.

Használható a SwiftUI és a WatchKit egy alkalmazásban?

Igen, kombinálhatod a SwiftUI-t és a WatchKit-et egy alkalmazásban. Használd a WKHostingController-t egy SwiftUI View beágyazásához a WKInterfaceController-ba, vagy fordítva — integráld a WKInterfaceObject-ot a UIViewRepresentable segítségével.

Hogyan lehet debugolni a WCSession-t valós eszközökön?

Indítsd el mindkét alkalmazást (iOS + watchOS) az Xcode-ból a csatlakoztatott eszközökön. Használd a hibakereső konzolt a WCSessionDelegate üzeneteinek megfigyeléséhez. Győződj meg róla, hogy mindkét eszköz Bluetooth hatótávolságon belül van (legfeljebb 10 méter).

Összefoglalás

  • WatchKit — az Apple keretrendszere Apple Watch alkalmazások készítéséhez, WKInterface UI komponensekkel és WKInterfaceController vezérlőkkel.
  • WCSession — a kétirányú kommunikáció központi mechanizmusa a Watch és iPhone között Bluetooth/Wi-Fi-n keresztül, üzenet-, fájl- és kontextustámogatással.
  • Complications — adatok az Apple Watch óralapján a CLKComplicationDataSource segítségével, 9 megjelenítési család támogatásával.
  • Workout API — osztálykészlet fitneszalkalmazásokhoz, pulzus-, GPS- és gyorsulásmérő adatok háttérben történő gyűjtésével a HKWorkoutSession segítségével.
  • SwiftUI — az Apple által ajánlott megközelítés új projektekhez, de a WatchKit továbbra is releváns legacy alkalmazásokhoz és specifikus funkciókhoz.
  • Kombináció WatchKit és SwiftUI egy alkalmazásban lehetséges a WKHostingController és UIViewRepresentable segítségével.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is