WatchKit — bu nima, Apple Watch va watchOS freymvorki

Muallif: IT Sectr Nashr etilgan: 2026-06-16 O'qish vaqti: 8 daq

WatchKit — Apple tomonidan Apple Watch uchun ilovalar yaratish freymvorki, 2014-yilda watchOS 1 bilan birga e'lon qilingan. WKInterface interfeys elementlari to'plami — tugmalar, yorliqlar, jadvallar, xaritalar — va ekranlar o'rtasida navigatsiya mexanizmlarini taqdim etadi. Zamonaviy watchOS dasturiy ta'minoti tobora SwiftUI-ga o'tayotgan bo'lsa-da, WatchKit mavjud ilovalarni qo'llab-quvvatlash va interfeys ustidan to'liq nazorat talab qilinadigan stsenariylar uchun muhim bo'lib qolmoqda. Apple Developer Documentation, 2026 ma'lumotlariga ko'ra, WatchKit watchOS App Store katalogidagi ilovalarning 35 foizida, jumladan fitness ilovalari, navigatorlar va ma'lumotlarga tezkor kirish uchun yordamchi dasturlarda qo'llanilmoqda.

Asosiy ma'lumotlar

  • WatchKit — Apple Watch uchun ilovalar yaratish freymvorki, WKInterface UI komponentlari va WKInterfaceController asosidagi navigatsiyadan foydalanadi.
  • WKInterfaceController — iOS-dagi UIViewController ga o'xshash, hayot sikli va iyerarxiyani boshqarishga ega ilova ekranining asosiy klassi.
  • WCSession — Apple Watch va iPhone o'rtasida Bluetooth orqali ma'lumot, fayl va kontekst uzatish imkonini beruvchi kommunikatsiya mexanizmi.
  • WKInterfaceDevice — qurilma haqida ma'lumot: ekran o'lchami, model, watchOS versiyasi va apparat komponentlari imkoniyatlari.
  • Complications Controller — CLKComplicationDataSource orqali faollashtiriladigan, soat siferblatida ma'lumotlarni ko'rsatish uchun API.

WatchKit nima va u qanday ishlaydi?

WatchKit — Apple Watch-da ilovalar yaratish uchun API taqdim etuvchi Apple freymvorki. watchOS 2 dan (2015) boshlab, WatchKit ilovalari to'g'ridan-to'g'ri soatda ishlaydi, iPhone da emas, bu ularga telefon bilan doimiy aloqasiz ma'lumotlarni qayta ishlash va interfeysni ko'rsatish imkonini beradi. Bungacha watchOS 1 da barcha ilovalar iPhone da ishlagan va soat faqat masofaviy ko'rsatish pulti bo'lib, UI da sezilarli kechikishlarga sabab bo'lgan.

Zamonaviy WatchKit arxitekturasi ikki komponentni o'z ichiga oladi: WatchKit App (Soatda Storyboard + resurslar) va WatchKit Extension (Soatda bajariladigan kod). Foydalanuvchi ikkala komponentni asosiy iOS ilovasini o'rnatishda App Store orqali o'rnatadi. WatchKit tizim funksiyalari bilan integratsiyani ta'minlaydi: bildirishnomalar (UNUserNotificationCenter orqali), komplikatsiyalar (siferblatda ma'lumotlar), Workout API va HealthKit.

Counterpoint Research (2025) ma'lumotlariga ko'ra, Apple Watch aqlli soatlar global bozorining 52 foizini egallaydi va o'rtacha foydalanuvchi WatchKit yoki SwiftUI yordamida 6–8 ta uchinchi tomon ilovasini o'rnatadi. Eng mashhur kategoriyalar fitness (56%), sog'liq (22%), navigatsiya (9%) va yordamchi dasturlar (8%).

watchOS uchun WatchKit vs SwiftUI

SwiftUI — watchOS 6 dan boshlab watchOS uchun interfeys yaratishning Apple tomonidan tavsiya etilgan usuli. SwiftUI deklarativ sintaksis va ekran o'lchamlariga avtomatik moslashishni taqdim etadi. Biroq WatchKit SwiftUI paydo bo'lishidan oldin boshlangan loyihalar, maxsus elementlardan (WKInterfaceMap, WKInterfaceMovie) foydalanish va watchOS 6 dan past versiyalarni qo'llab-quvvatlash talab qilinadigan holatlar uchun dolzarbligicha qolmoqda.

MezonWatchKitSwiftUI
Apple tavsiyasiLegacyCurrent
Minimal watchOSwatchOS 1watchOS 6
Kod hajmiKo'proqKamroq
Compose integratsiyasiSinflar orqali to'g'ridan-to'g'riWidgetKit orqali
WKInterfaceMapHaMap (MapKit)

WatchKit interfeysi: WKInterfaceController va elementlar

WKInterfaceController — WatchKit da ekranni boshqarish uchun asosiy klass. Hayot siklisi uchun javobgardir: ishga tushirish (awake(withContext:)), ko'rinish (willActivate), yo'qolish (didDeactivate) va kontrollerlar o'rtasida kontekst uzatish. Ilovaning har bir ekrani Interface Builder orqali Storyboard bilan bog'langan alohida WKInterfaceController subclassi bilan ifodalanadi. Navigatsiya iyerarxik (push) yoki modal (present) bo'lishi mumkin.

WatchKit WKInterface prefiksli interfeys elementlari to'plamini taqdim etadi: WKInterfaceLabel (matn), WKInterfaceButton (tugma), WKInterfaceTable (jadval), WKInterfaceImage (tasvir), WKInterfaceMap (xarita) va WKInterfaceGroup (yumaloq burchaklar va fon bilan konteyner). Barcha elementlar asinxron ishlaydi — UI o'zgarishlari navbatga qo'yiladi va tizim tomonidan render sikllari orasida qo'llaniladi, bu soat ekranida barqaror 30 FPS kafolatlaydi.

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

WCSession: Watch va iPhone o'rtasida kommunikatsiya

WCSession — Apple Watch va iPhone o'rtasida Bluetooth yoki Wi-Fi orqali ikki tomonlama kommunikatsiya uchun markaziy klass. Sessiya kichik ma'lumot lug'atlarini uzatish (updateApplicationContext), darhol javob bilan xabar yuborish (sendMessage), fayllarni uzatish (transferFile) va murakkab obyektlarni sinxronlashtirish (transferUserInfo) imkonini beradi. WCSession asinxron ishlaydi va avtomatik ravishda optimal aloqa kanalini tanlaydi.

WCSession dan foydalanish uchun sessiyani ikkala qurilmada faollashtirish kerak. Watch ilovasi willActivate() metodida WCSession yaratadi, iOS ilovasi esa AppDelegate yoki SceneDelegate da. Sessiya faollashtirilgandan so'ng, qurilmalar imkon qadar kontekstni avtomatik sinxronlashtiradi. Kiruvchi ma'lumotlarni qabul qilish va ulanish holatini kuzatish uchun WCSessionDelegate ni qayta ishlash muhim.

Watch tomonida WCSession namunasi

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: soat siferblatida ma'lumotlar

Complications — Apple Watch siferblatida ko'rsatiladigan va ilovani ochmasdan ma'lumotlarga tezkor kirishni ta'minlovchi kichik ma'lumot elementlari. WatchKit CLKComplicationDataSource — ilovaga komplikatsiyalar uchun ma'lumot yetkazib berish imkonini beruvchi protokolni taqdim etadi. Siferblat qaysi pozitsiyalar mavjudligini o'zi hal qiladi — dumaloq (circular), to'rtburchak (rectangular), burchak (corner) yoki modulli (modular).

Dasturchi uchta o'lcham oilasi uchun komplikatsiyalar taqdim etishi mumkin: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge va utilitarianSmall/Large. Har bir oilaning o'z o'lchamlari va ko'rsatish formati bor. Ilova bir nechta oilani qo'llab-quvvatlashi mumkin, lekin kamida ikkitasi — grafik va modulli tavsiya etiladi.

CLKComplicationDataSource namunasi

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 tilida WatchKit ilovasi namunasi

WatchKit ilovasini yaratish Xcode da WatchKit App Target qo'shish bilan boshlanadi. Xcode boshlang'ich kontroller bilan Interface.storyboard yaratadi va uni avtomatik ravishda InterfaceController klassi bilan bog'laydi. Dasturchi Interface Builder orqali UI elementlarini qo'shadi va kod bilan o'zaro aloqa uchun IBOutlet yaratadi. Quyida — WCSession orqali iPhone dan olingan ma'lumotlar jadvali bilan kontrollerning to'liq namunasi.

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

Fitness ilovalari uchun Workout API

Workout API — Apple Watch da fon rejimida mashg'ulotlarni ishga tushira oladigan fitness ilovalarini yaratish uchun WatchKit klasslari to'plami. API sensorlarga kirishni ta'minlaydi: akselerometr, giroskop, yurak urish tezligi sensori (HKHealthStore orqali) va GPS (GPS li Watch modellarida). Mashg'ulotlar HealthKit dan HKWorkoutSession orqali ishga tushiriladi va yurak urish tezligi ma'lumotlari HKSampleQuery orqali real vaqtda yangilanadi.

Workout API ning asosiy afzalligi fon rejimida ishlash imkoniyatidir. Mashg'ulot faol bo'lganda, watchOS qo'l tushirilganda ilovani to'xtatmaydi — sensorlar ma'lumot yig'ishda davom etadi va ilova yurak urishi, masofa, tezlik va boshqa ko'rsatkichlarni ko'rsatishi mumkin. Mashg'ulot tugagandan so'ng, ma'lumotlar HealthKit orqali iPhone dagi Health App bilan sinxronlashtiriladi, bu foydalanuvchining yagona fitness profilini ta'minlaydi.

Sensorlar bilan mashg'ulotni boshlash

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 so'raladigan savollar

Yangi loyihada WatchKit dan foydalanishga arziydimi?

Apple yangi watchOS ilovalari uchun SwiftUI ni tavsiya qiladi. WatchKit ni faqat legacy loyihalarni qo'llab-quvvatlash yoki SwiftUI da mavjud bo'lmagan WKInterfaceMap kabi maxsus funksionallik kerak bo'lganda foydalaning.

Aloqasiz Watch dan iPhone ga ma'lumotlarni qanday uzatish mumkin?

WCSession transferUserInfo va transferFile orqali kechiktirilgan uzatishni qo'llab-quvvatlaydi. Ma'lumotlar soat va telefon o'rtasida navbatdagi aloqa o'rnatilganda yetkaziladi, bu vaqtinchalik aloqa uzilishida ham yetkazilishni kafolatlaydi.

WatchKit ilovalari barcha Apple Watch modellarida ishlaydimi?

WatchKit da yozilgan ilovalar Apple Watch Series 0 va undan yangilari (watchOS 1+) bilan mos keladi. Biroq ba'zi funksiyalar (GPS, yurak urish sensori, dinamik orol) faqat ma'lum modellarda mavjud.

Bitta ilovada SwiftUI va WatchKit birgalikda ishlatilishi mumkinmi?

Ha, bitta ilovada SwiftUI va WatchKit ni birlashtirish mumkin. SwiftUI View ni WKInterfaceController ga joylashtirish uchun WKHostingController dan yoki aksincha — UIViewRepresentable orqali WKInterfaceObject ni integratsiya qiling.

Haqiqiy qurilmalarda WCSession ni qanday sozlash mumkin?

Ulangan qurilmalarda Xcode dan ikkala ilovani (iOS + watchOS) ishga tushiring. WCSessionDelegate xabarlarini kuzatish uchun sozlash konsolidan foydalaning. Ikkala qurilma Bluetooth masofasida (10 metrgacha) ekanligiga ishonch hosil qiling.

Xulosa

  • WatchKit — Apple Watch uchun ilovalar yaratish freymvorki, WKInterface UI komponentlari va WKInterfaceController kontrollerlaridan foydalanadi.
  • WCSession — Bluetooth/Wi-Fi orqali Watch va iPhone o'rtasida ikki tomonlama kommunikatsiyaning markaziy mexanizmi, xabar, fayl va kontekst qo'llab-quvvatlashi bilan.
  • Complications — CLKComplicationDataSource orqali Apple Watch siferblatida ma'lumotlar, 9 ta ko'rsatish oilasini qo'llab-quvvatlash bilan.
  • Workout API — HKWorkoutSession orqali fon rejimida yurak urishi, GPS va akselerometr ma'lumotlarini yig'uvchi fitness ilovalari uchun klasslar to'plami.
  • SwiftUI — yangi loyihalar uchun Apple tavsiya qilgan yondashuv, ammo WatchKit legacy ilovalar va maxsus funksionallik uchun dolzarbligicha qolmoqda.
  • Birlashtirish WatchKit va SwiftUI ni bitta ilovada WKHostingController va UIViewRepresentable orqali birlashtirish mumkin.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing