WatchKit — bu nədir, Apple Watch və watchOS freymvorku

Müəllif: IT Sectr Dərc olunub: 2026-06-16 Oxuma vaxtı: 8 dəq

WatchKit — Apple tərəfindən Apple Watch üçün tətbiqlər yaratmaq üçün freymvork, 2014-cü ildə watchOS 1 ilə birlikdə elan edilmişdir. WKInterface interfeys elementləri dəsti — düymələr, etiketlər, cədvəllər, xəritələr — və ekranlar arasında naviqasiya mexanizmləri təqdim edir. Müasir watchOS tərtibatı getdikcə SwiftUI-ə keçsə də, WatchKit mövcud tətbiqləri dəstəkləmək və interfeys üzərində tam nəzarət tələb edən ssenarilər üçün vacib olaraq qalır. Apple Developer Documentation, 2026 məlumatına görə, WatchKit watchOS App Store kataloqundakı tətbiqlərin 35%-də, o cümlədən fitnes tətbiqləri, naviqatorlar və məlumatlara sürətli giriş üçün yardımçı proqramlarda istifadə olunur.

Əsas məqamlar

  • WatchKit — Apple Watch üçün tətbiqlər yaratmaq üçün Apple freymvorku, WKInterface UI komponentləri və WKInterfaceController əsaslı naviqasiyadan istifadə edir.
  • WKInterfaceController — iOS-dakı UIViewController-ə bənzər, həyat dövrü idarəetməsi və iyerarxiyası olan tətbiq ekranının əsas sinfi.
  • WCSession — Apple Watch və iPhone arasında Bluetooth vasitəsilə məlumat, fayl və kontekst ötürməyə imkan verən kommunikasiya mexanizmi.
  • WKInterfaceDevice — cihaz haqqında məlumat: ekran ölçüsü, model, watchOS versiyası və aparat komponentlərinin imkanları.
  • Complications Controller — CLKComplicationDataSource vasitəsilə aktivləşdirilən, saat siferblatında məlumat göstərmək üçün API.

WatchKit nədir və necə işləyir?

WatchKit — Apple Watch-da tətbiqlər yaratmaq üçün API təqdim edən Apple freymvorku. watchOS 2-dən (2015) başlayaraq, WatchKit tətbiqləri birbaşa saatda işləyir, iPhone-da deyil, bu da onlara telefonla daimi əlaqə olmadan məlumatları emal etməyə və interfeysi göstərməyə imkan verir. Bundan əvvəl watchOS 1-də bütün tətbiqlər iPhone-da işləyir, saat isə yalnız uzaqdan göstərmə pultu idi və bu, UI-də əhəmiyyətli gecikmələr yaradırdı.

Müasir WatchKit arxitekturası iki komponentdən ibarətdir: WatchKit App (Saatda Storyboard + resurslar) və WatchKit Extension (Saatda icra olunan kod). İstifadəçi əsas iOS tətbiqini quraşdırarkən hər iki komponenti App Store vasitəsilə quraşdırır. WatchKit sistem funksiyaları ilə inteqrasiyanı təmin edir: bildirişlər (UNUserNotificationCenter vasitəsilə), komplikasiyalar (siferblatda məlumatlar), Workout API və HealthKit.

Counterpoint Research (2025) məlumatına görə, Apple Watch ağıllı saatların qlobal bazarının 52%-ni tutur və orta istifadəçi WatchKit və ya SwiftUI ilə 6–8 üçüncü tərəf tətbiqi quraşdırır. Ən populyar kateqoriyalar fitnes (56%), sağlamlıq (22%), naviqasiya (9%) və yardımçı proqramlardır (8%).

watchOS üçün WatchKit vs SwiftUI

SwiftUI — watchOS 6-dan başlayaraq watchOS üçün interfeys yaratmağın Apple tərəfindən tövsiyə olunan üsuludur. SwiftUI deklarativ sintaksis və ekran ölçülərinə avtomatik uyğunlaşma təqdim edir. Lakin WatchKit SwiftUI meydana çıxmazdan əvvəl başlanmış layihələr, spesifik elementlərdən (WKInterfaceMap, WKInterfaceMovie) istifadə və watchOS 6-dan aşağı versiyaları dəstəkləmək tələb olunan hallar üçün aktual olaraq qalır.

KriteriyaWatchKitSwiftUI
Apple tövsiyəsiLegacyCurrent
Minimal watchOSwatchOS 1watchOS 6
Kod həcmiDaha çoxDaha az
Compose inteqrasiyasıSiniflər vasitəsilə birbaşaWidgetKit vasitəsilə
WKInterfaceMapBəliMap (MapKit)

WatchKit interfeysi: WKInterfaceController və elementlər

WKInterfaceController — WatchKit-də ekranı idarə etmək üçün əsas sinif. Həyat dövrünə cavabdehdir: inisializasiya (awake(withContext:)), görünmə (willActivate), yox olma (didDeactivate) və kontrollerlər arasında kontekst ötürülməsi. Tətbiqin hər bir ekranı Interface Builder vasitəsilə Storyboard ilə əlaqələndirilmiş ayrıca WKInterfaceController alt sinfi ilə təmsil olunur. Naviqasiya iyerarxik (push) və ya modal (present) ola bilər.

WatchKit WKInterface prefiksli interfeys elementləri dəsti təqdim edir: WKInterfaceLabel (mətn), WKInterfaceButton (düymə), WKInterfaceTable (cədvəl), WKInterfaceImage (şəkil), WKInterfaceMap (xəritə) və WKInterfaceGroup (yuvarlaq künclər və fon ilə konteyner). Bütün elementlər asinxron işləyir — UI dəyişiklikləri növbəyə qoyulur və sistem tərəfindən render dövrləri arasında tətbiq edilir ki, bu da saat ekranında sabit 30 FPS təmin edir.

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

WCSession: Watch və iPhone arasında kommunikasiya

WCSession — Apple Watch və iPhone arasında Bluetooth və ya Wi-Fi vasitəsilə ikitərəfli kommunikasiya üçün mərkəzi sinif. Sessiya kiçik məlumat lüğətlərini ötürməyə (updateApplicationContext), dərhal cavabla mesaj göndərməyə (sendMessage), faylları ötürməyə (transferFile) və mürəkkəb obyektləri sinxronlaşdırmağa (transferUserInfo) imkan verir. WCSession asinxron işləyir və avtomatik olaraq optimal rabitə kanalını seçir.

WCSession-dan istifadə etmək üçün sessiyanı hər iki cihazda aktivləşdirmək lazımdır. Watch tətbiqi willActivate() metodunda WCSession yaradır, iOS tətbiqi isə AppDelegate və ya SceneDelegate-də. Sessiya aktivləşdirildikdən sonra cihazlar imkan daxilində konteksti avtomatik sinxronlaşdırır. Daxil olan məlumatları qəbul etmək və əlaqə vəziyyətini izləmək üçün WCSessionDelegate-i emal etmək vacibdir.

Watch tərəfində WCSession nümunəsi

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: saat siferblatında məlumatlar

Complications — Apple Watch siferblatında göstərilən və tətbiqi açmadan məlumatlara sürətli giriş təmin edən kiçik məlumat elementləridir. WatchKit CLKComplicationDataSource — tətbiqə komplikasiyalar üçün məlumat təqdim etməyə imkan verən protokol təqdim edir. Siferblat özü hansı mövqelərin mövcud olduğuna qərar verir — dairəvi (circular), düzbucaqlı (rectangular), künc (corner) və ya modul (modular).

Tərtibatçı üç ölçü ailəsi üçün komplikasiyalar təqdim edə bilər: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge və utilitarianSmall/Large. Hər bir ailənin öz ölçüləri və göstərmə formatı var. Tətbiq bir neçə ailəni dəstəkləyə bilər, lakin ən azı iki — qrafik və modul tövsiyə olunur.

CLKComplicationDataSource nümunəsi

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

Swift dilində WatchKit tətbiqi nümunəsi

WatchKit tətbiqi yaratmaq Xcode-da WatchKit App Target əlavə etməklə başlayır. Xcode ilkin kontroller ilə Interface.storyboard yaradır və onu avtomatik olaraq InterfaceController sinfi ilə əlaqələndirir. Tərtibatçı Interface Builder vasitəsilə UI elementləri əlavə edir və kodla qarşılıqlı əlaqə üçün IBOutlet yaradır. Aşağıda — WCSession vasitəsilə iPhone-dan alınan məlumatların cədvəli olan kontrollerin tam nümunəsi.

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

Fitnes tətbiqləri üçün Workout API

Workout API — Apple Watch-da fon rejimində məşqləri işə sala bilən fitnes tətbiqləri yaratmaq üçün WatchKit siniflər dəsti. API sensorlara giriş təmin edir: akselerometr, giroskop, ürək döyüntüsü sensoru (HKHealthStore vasitəsilə) və GPS (GPS-li Watch modellərində). Məşqlər HealthKit-dən HKWorkoutSession vasitəsilə işə salınır, nəbzlər isə HKSampleQuery vasitəsilə real vaxtda yenilənir.

Workout API-nin əsas üstünlüyü fon rejimində işləmək imkanıdır. Məşq aktiv olduqda, watchOS əl endirildikdə tətbiqi dayandırmır — sensorlar məlumat toplamağa davam edir və tətbiq nəbz, məsafə, sürət və digər göstəriciləri göstərə bilər. Məşq bitdikdən sonra məlumatlar HealthKit vasitəsilə iPhone-dakı Health App ilə sinxronlaşdırılır ki, bu da vahid istifadəçi fitnes profili təmin edir.

Sensorlarla məşqin başladılması

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

Tez-tez verilən suallar

Yeni layihədə WatchKit istifadə etməyə dəyərmi?

Apple yeni watchOS tətbiqləri üçün SwiftUI-i tövsiyə edir. WatchKit-i yalnız legacy layihələri dəstəkləmək və ya SwiftUI-də mövcud olmayan WKInterfaceMap kimi spesifik funksionallıq tələb olunduqda istifadə edin.

Əlaqə olmadan Watch-dan iPhone-a məlumat necə ötürülür?

WCSession transferUserInfo və transferFile vasitəsilə təxirə salınmış ötürməni dəstəkləyir. Məlumatlar saat və telefon arasında növbəti əlaqə qurulduqda çatdırılacaq ki, bu da müvəqqəti əlaqə itkisində belə çatdırılmanı təmin edir.

WatchKit tətbiqləri bütün Apple Watch modellərində işləyirmi?

WatchKit-də yazılmış tətbiqlər Apple Watch Series 0 və daha yeniləri (watchOS 1+) ilə uyğundur. Lakin bəzi funksiyalar (GPS, ürək döyüntüsü sensoru, dinamik island) yalnız müəyyən modellərdə mövcuddur.

Bir tətbiqdə SwiftUI və WatchKit birlikdə istifadə edilə bilərmi?

Bəli, bir tətbiqdə SwiftUI və WatchKit birləşdirilə bilər. SwiftUI View-i WKInterfaceController-də yerləşdirmək üçün WKHostingController-dən və ya əksinə — UIViewRepresentable vasitəsilə WKInterfaceObject-u inteqrasiya edin.

Real cihazlarda WCSession-u necə sazlamaq olar?

Qoşulmuş cihazlarda Xcode-dan hər iki tətbiqi (iOS + watchOS) işə salın. WCSessionDelegate mesajlarını izləmək üçün sazlama konsolundan istifadə edin. Hər iki cihazın Bluetooth məsafəsində (10 metrə qədər) olduğuna əmin olun.

Nəticə

  • WatchKit — Apple Watch üçün tətbiqlər yaratmaq üçün Apple freymvorku, WKInterface UI komponentləri və WKInterfaceController kontrollerlərindən istifadə edir.
  • WCSession — Bluetooth/Wi-Fi vasitəsilə Watch və iPhone arasında ikitərəfli kommunikasiyanın mərkəzi mexanizmi, mesaj, fayl və kontekst dəstəyi ilə.
  • Complications — CLKComplicationDataSource vasitəsilə Apple Watch siferblatında məlumatlar, 9 göstərmə ailəsi dəstəyi ilə.
  • Workout API — HKWorkoutSession vasitəsilə fon rejimində nəbz, GPS və akselerometr məlumatlarını toplayan fitnes tətbiqləri üçün siniflər dəsti.
  • SwiftUI — yeni layihələr üçün Apple tərəfindən tövsiyə olunan yanaşma, lakin WatchKit legacy tətbiqlər və spesifik funksionallıq üçün aktual olaraq qalır.
  • Birləşdirmə WatchKit və SwiftUI bir tətbiqdə WKHostingController və UIViewRepresentable vasitəsilə mümkündür.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun