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-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%).
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.
| Kriteriya | WatchKit | SwiftUI |
|---|---|---|
| Apple tövsiyəsi | Legacy | Current |
| Minimal watchOS | watchOS 1 | watchOS 6 |
| Kod həcmi | Daha çox | Daha az |
| Compose inteqrasiyası | Siniflər vasitəsilə birbaşa | WidgetKit vasitəsilə |
| WKInterfaceMap | Bəli | Map (MapKit) |
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.
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 — 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.
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 — 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.
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)
}
}
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.
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 — 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.
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
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.
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-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.
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.
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ə
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.
Həm də oxuyun