WatchKit — ce este, framework-ul Apple Watch și watchOS

Autor: IT Sectr Publicat: 2026-06-16 Timp de citire: 8 min

WatchKit — framework-ul Apple pentru crearea aplicațiilor pe Apple Watch, anunțat în 2014 împreună cu watchOS 1. Oferă un set de elemente de interfață WKInterface — butoane, etichete, tabele, hărți — și mecanisme de navigare între ecrane. Deși dezvoltarea modernă pentru watchOS trece tot mai mult la SwiftUI, WatchKit rămâne important pentru suportul aplicațiilor existente și scenariilor care necesită control complet asupra interfeței. Conform Apple Developer Documentation, 2026, WatchKit este încă utilizat în 35% din aplicațiile din catalogul watchOS App Store, inclusiv aplicații de fitness, navigatoare și utilitare pentru acces rapid la date.

Principalele idei

  • WatchKit — framework Apple pentru crearea aplicațiilor pe Apple Watch, utilizând componente UI WKInterface și navigare bazată pe WKInterfaceController.
  • WKInterfaceController — clasa principală a ecranului aplicației, similară cu UIViewController pe iOS, cu gestionarea ciclului de viață și ierarhiei.
  • WCSession — mecanism de comunicare între Apple Watch și iPhone, permițând transmiterea de date, fișiere și context prin Bluetooth.
  • WKInterfaceDevice — informații despre dispozitiv: dimensiunea ecranului, modelul, versiunea watchOS și capacitățile componentelor hardware.
  • Complications Controller — API pentru afișarea datelor pe cadranul ceasului, activat prin CLKComplicationDataSource.

Ce este WatchKit și cum funcționează?

WatchKit — framework Apple care oferă API pentru crearea aplicațiilor pe Apple Watch. Începând cu watchOS 2 (2015), aplicațiile WatchKit rulează direct pe ceas, nu pe iPhone, permițându-le să proceseze date și să afișeze interfața fără o conexiune permanentă cu telefonul. Înainte de aceasta, în watchOS 1, toate aplicațiile rulau pe iPhone, iar ceasul era doar un telecomandă de afișare la distanță, ceea ce crea întârzieri semnificative în UI.

Arhitectura modernă WatchKit include două componente: WatchKit App (Storyboard + resurse pe ceas) și WatchKit Extension (cod executat pe ceas). Utilizatorul instalează ambele componente prin App Store la instalarea aplicației iOS părinte. WatchKit asigură integrarea cu funcțiile sistemului: notificări (prin UNUserNotificationCenter), complicații (date pe cadran), Workout API și HealthKit.

Conform Counterpoint Research (2025), Apple Watch deține 52% din piața globală a ceasurilor inteligente, iar utilizatorul mediu instalează 6–8 aplicații terțe folosind WatchKit sau SwiftUI. Cele mai populare categorii sunt fitness (56%), sănătate (22%), navigare (9%) și utilități (8%).

WatchKit vs SwiftUI pentru watchOS

SwiftUI — metoda recomandată de Apple pentru crearea interfețelor watchOS începând cu watchOS 6. SwiftUI oferă sintaxă declarativă și adaptare automată la dimensiunile ecranului. Totuși, WatchKit rămâne relevant pentru proiecte începute înainte de apariția SwiftUI, pentru utilizarea elementelor specifice (WKInterfaceMap, WKInterfaceMovie) și în cazurile care necesită suport pentru versiuni watchOS mai vechi de 6.

CriteriuWatchKitSwiftUI
Recomandare AppleLegacyCurrent
WatchOS minimwatchOS 1watchOS 6
Volum de codMai multMai puțin
Integrare ComposeDirectă prin clasePrin WidgetKit
WKInterfaceMapDaMap (MapKit)

Interfața WatchKit: WKInterfaceController și elemente

WKInterfaceController — clasa de bază pentru gestionarea ecranului în WatchKit. Răspunde de ciclul de viață: inițializare (awake(withContext:)), apariție (willActivate), dispariție (didDeactivate) și transmiterea contextului între controlere. Fiecare ecran al aplicației este reprezentat de o subclasă separată WKInterfaceController, legată de Storyboard prin Interface Builder. Navigarea poate fi ierarhică (push) sau modală (present).

WatchKit oferă un set de elemente de interfață cu prefixul WKInterface: WKInterfaceLabel (text), WKInterfaceButton (buton), WKInterfaceTable (tabel), WKInterfaceImage (imagine), WKInterfaceMap (hartă) și WKInterfaceGroup (container cu colțuri rotunjite și fundal). Toate elementele funcționează asincron — modificările UI sunt puse în coadă și aplicate de sistem între ciclurile de randare, garantând 30 FPS stabile pe ecranul ceasului.

WKInterfaceController de bază

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("Salut, Watch!")
    }
    
    override func willActivate() {
        super.willActivate()
        actionButton.setTitle("Start")
    }
    
    @IBAction func didTapButton() {
        pushController(withName: "DetailController", context: nil)
    }
}

WCSession: comunicarea între Watch și iPhone

WCSession — clasa centrală pentru comunicarea bidirecțională între Apple Watch și iPhone prin Bluetooth sau Wi-Fi. Sesimea permite transmiterea de dicționare mici de date (updateApplicationContext), trimiterea de mesaje cu răspuns imediat (sendMessage), transmiterea de fișiere (transferFile) și sincronizarea obiectelor complexe (transferUserInfo). WCSession funcționează asincron și selectează automat canalul de comunicare optim.

Pentru a folosi WCSession, trebuie activată sesiunea pe ambele dispozitive. Aplicația Watch creează WCSession în metoda willActivate(), iar aplicația iOS — în AppDelegate sau SceneDelegate. După activarea sesiunii, dispozitivele sincronizează automat contextul atunci când este posibil. Este important să gestionați delegatul WCSessionDelegate pentru primirea datelor de intrare și urmărirea stării conexiunii.

Exemplu WCSession pe partea 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: date pe cadranul ceasului

Complications — elemente mici de date care sunt afișate pe cadranul Apple Watch și oferă acces rapid la informații fără a deschide aplicația. WatchKit oferă CLKComplicationDataSource — un protocol a cărui implementare permite aplicației să furnizeze date pentru complicații. Cadranul decide singur ce poziții sunt disponibile — rotunde (circular), dreptunghiulare (rectangular), colț (corner) sau modulare (modular).

Dezvoltatorul poate furniza complicații pentru trei dimensiuni de familii: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge și utilitarianSmall/Large. Fiecare familie are propriile dimensiuni și format de afișare. Aplicația poate suporta mai multe familii, dar se recomandă cel puțin două — grafică și modulară.

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

Exemplu de aplicație WatchKit în Swift

Crearea unei aplicații WatchKit începe cu adăugarea WatchKit App Target în Xcode. Xcode generează Interface.storyboard cu un controler inițial și îl leagă automat de clasa InterfaceController. Dezvoltatorul adaugă elemente UI prin Interface Builder și creează IBOutlet pentru interacțiunea din cod. Mai jos — un exemplu complet de controler cu un tabel de date primite de pe iPhone prin 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 pentru aplicații de fitness

Workout API — un set de clase WatchKit pentru crearea aplicațiilor de fitness care pot rula antrenamente pe Apple Watch în fundal. API oferă acces la senzori: accelerometru, giroscop, pulsmetru (prin HKHealthStore) și GPS (pe modelele Watch cu GPS). Antrenamentele sunt lansate prin HKWorkoutSession din HealthKit, iar datele pulsului sunt actualizate în timp real prin HKSampleQuery.

Avantajul cheie al Workout API este posibilitatea de a lucra în fundal. Când antrenamentul este activ, watchOS nu întrerupe aplicația la coborârea mâinii — senzorii continuă să colecteze date, iar aplicația poate afișa pulsul, distanța, ritmul și alte metrici. După încheierea antrenamentului, datele sunt sincronizate cu Health App pe iPhone prin HealthKit, asigurând un profil de fitness unificat al utilizatorului.

Lansarea antrenamentului cu senzori

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

Întrebări frecvente

Merită să folosiți WatchKit într-un proiect nou?

Apple recomandă SwiftUI pentru aplicațiile noi watchOS. Folosiți WatchKit doar pentru suportul proiectelor legacy sau dacă este necesară o funcționalitate specifică precum WKInterfaceMap, indisponibilă în SwiftUI.

Cum se transmit datele de pe Watch pe iPhone fără conexiune?

WCSession suportă transmiterea întârziată prin transferUserInfo și transferFile. Datele vor fi livrate la următoarea stabilire a conexiunii între ceas și telefon, garantând livrarea chiar și în cazul pierderii temporare a conexiunii.

Aplicațiile WatchKit funcționează pe toate modelele Apple Watch?

Aplicațiile scrise în WatchKit sunt compatibile cu Apple Watch Series 0 și mai noi (watchOS 1+). Cu toate acestea, unele funcții (GPS, pulsmetru, insulă dinamică) sunt disponibile doar pe anumite modele.

Se pot folosi SwiftUI și WatchKit în aceeași aplicație?

Da, puteți combina SwiftUI și WatchKit în aceeași aplicație. Folosiți WKHostingController pentru încorporarea unei vederi SwiftUI în WKInterfaceController sau invers — integrați WKInterfaceObject prin UIViewRepresentable.

Cum se depanează WCSession pe dispozitive reale?

Rulați ambele aplicații (iOS + watchOS) din Xcode pe dispozitivele conectate. Folosiți consola de depanare pentru a observa mesajele WCSessionDelegate. Asigurați-vă că ambele dispozitive se află în raza Bluetooth (până la 10 metri).

Concluzii

  • WatchKit — framework Apple pentru crearea aplicațiilor pe Apple Watch, utilizând componente UI WKInterface și controlere WKInterfaceController.
  • WCSession — mecanismul central de comunicare bidirecțională între Watch și iPhone prin Bluetooth/Wi-Fi cu suport pentru mesaje, fișiere și context.
  • Complications — date pe cadranul Apple Watch prin CLKComplicationDataSource cu suport pentru 9 familii de afișare.
  • Workout API — set de clase pentru aplicații de fitness cu colectare în fundal a datelor de puls, GPS și accelerometru prin HKWorkoutSession.
  • SwiftUI — abordarea recomandată de Apple pentru proiecte noi, însă WatchKit rămâne relevant pentru aplicații legacy și funcționalități specifice.
  • Combinarea WatchKit și SwiftUI într-o singură aplicație este posibilă prin WKHostingController și UIViewRepresentable.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și