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, 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%).
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.
| Szempont | WatchKit | SwiftUI |
|---|---|---|
| Apple ajánlás | Legacy | Current |
| Minimális watchOS | watchOS 1 | watchOS 6 |
| Kód mennyisége | Több | Kevesebb |
| Compose integráció | Közvetlenül osztályokon keresztül | WidgetKiten keresztül |
| WKInterfaceMap | Igen | Map (MapKit) |
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.
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 — 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.
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 — 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.
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)
}
}
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.
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 — 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.
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
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.
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.
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.
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.
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
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.
Olvassa el is