watchOS — 2015-yilda birinchi soatlar bilan birga chiqarilgan Apple Watch uchun Apple operatsion tizimi. watchOS uchun ilovalar Swift tilida SwiftUI va WatchKit yordamida ishlab chiqiladi. Xususiyatlari: kichik to'rtburchak ekran, 0,3 Vt·soat akkumulyatordan cheklangan energiya iste'moli va Bluetooth orqali iPhone bilan zich integratsiya. Counterpoint Research ma'lumotlariga ko'ra, Apple Watch jahon aqlli soatlar bozorining 30% dan ortig'ini egallaydi.
Asosiy fikrlar
watchOS — XNU Darwin yadrosiga asoslangan Apple aqlli soatlari uchun operatsion tizim. Birinchi marta 2015-yil 24-aprelda Apple Watch Series 0 bilan birga chiqarilgan. Tizim iOS bilan bir xil arxitekturada qurilgan, ammo kichik displey (1,5 dan 1,9 dyuymgacha), cheklangan xotira (Series 9 da 1 GB RAM gacha) va minimal energiya iste'moli uchun optimallashtirilgan.
StatCounter ma'lumotlariga ko'ra (2026), watchOS aqlli soatlar uchun operatsion tizimlar bozorining taxminan 55% ini egallaydi, Wear OS va Xitoy ishlab chiqaruvchilarining xususiy tizimlaridan oldinda. Apple har yili watchOS ning asosiy yangilanishlarini chiqaradi, soatlarni chiqarilgan paytdan boshlab 5 yilgacha qo'llab-quvvatlaydi.
watchOS ning asosiy xususiyati — iPhone ga bog'liqlik. Aksariyat ilovalar ma'lumotlarni sinxronlashtirish uchun Watch Connectivity dan foydalanadi. watchOS 6 dan boshlab, soatlar App Store dan to'g'ridan-to'g'ri ilovalarni o'rnatishi mumkin, ammo iPhone siz to'liq mustaqillik faqat watchOS 9 dan qo'llab-quvvatlanadi.
Birinchi Watch OS 1.0 versiyasi uchinchi tomon ilovalarini qo'llab-quvvatlamadi — faqat Apple-ning oldindan o'rnatilgan ilovalari. watchOS 2 (2015) ishlab chiquvchilar uchun SDKni ochdi. watchOS 3 (2016) ilovalarni ishga tushirishni 7 marta tezlashtirdi. watchOS 6 (2019) soatda App Store ni taqdim etdi. watchOS 9 (2022) dori-darmonlar va yaxshilangan uyqu kuzatuvini qo'shdi. watchOS 10 (2023) chiqarilganidan beri eng katta interfeys yangilanishi bo'ldi.
| watchOS versiyasi | Yil | Asosiy yangilik |
|---|---|---|
| Watch OS 1 | 2015 | Birinchi versiya, faqat Apple-ning mahalliy ilovalari |
| watchOS 2 | 2015 | Ochiq SDK, uchinchi tomon ilovalari, Watch Connectivity |
| watchOS 3 | 2016 | Ilovalarni zudlik bilan ishga tushirish, Dock, Scribble |
| watchOS 6 | 2019 | Soatda App Store, Cycle Tracking, Noise ilovasi |
| watchOS 9 | 2022 | Dori-darmonlar, uyqu fazalari, yaxshilangan yugurish hamrohi |
| watchOS 10 | 2023 | Smart Stack, Double Tap, yangi soat yuzlari |
watchOS arxitekturasi uskunani foydalanuvchi ilovalaridan ajratuvchi uch darajadan iborat. iOS dan farqli o'laroq, watchOS komponentli yondashuvdan foydalanadi: ilova ikkita maqsaddan — kengaytma (extension) va iPhone dagi xostdan iborat.
Pastki daraja — S4/S5/S6/S7/S8/S9 Apple chiplari uchun drayverli modifikatsiyalangan XNU yadrosi. Apple Watch Series 9 da 5,6 milliard tranzistorli va 4 yadroli Neural Engine li S9 SiP ishlatiladi. Tizim xizmatlari Core Bluetooth, Watch Connectivity, HealthKit va Core Motion ni o'z ichiga oladi. Barcha fon vazifalari BGTaskScheduler — energiya iste'molini optimallashtiruvchi tizim rejalashtiruvchisi tomonidan boshqariladi.
WatchKit — watchOS ilovalari interfeyslarini yaratish uchun freymvork. WKInterfaceController, WKInterfaceGroup, WKInterfaceLabel va WKInterfaceButton ni o'z ichiga oladi. watchOS 6 dan boshlab Apple WatchKit o'rniga SwiftUI ni tavsiya qiladi. SwiftUI bir xil imkoniyatlarni taqdim etadi, ammo deklarativ sintaksis va ekran o'lchamiga avtomatik moslashish bilan: 38 mm (272×340), 42 mm (312×390), 40 mm (324×394), 44 mm (368×448), 45 mm (396×484), 49 mm (410×502 Apple Watch Ultra da).
watchOS batareyani tejash uchun ilovalarning fon ishini cheklaydi. Mavjud fon rejimlari: Workout (mashqlar), HealthKit (salomatlik monitoringi), Location (geolokatsiya), Audio (audio pleyer) va Complication (soat yuzidagi ma'lumotlar). Har bir rejim entitlements da alohida capability talab qiladi. Odatdagi energiya iste'moli: faol ilova — 50-80 mA, fon rejimi — 5-15 mA, Standby — 1-3 mA.
import BackgroundTasks
import WatchKit
/// watchOS da fon ma'lumot yangilanishini rejalashtirish
class BackgroundTaskManager: NSObject {
func scheduleBackgroundRefresh() {
let request = BGAppRefreshTaskRequest(identifier: "com.example.refresh")
request.earliestBeginDate = Date(timeIntervalSinceNow: 30 * 60)
try? BGTaskScheduler.shared.submit(request)
}
func handleAppRefresh(task: BGAppRefreshTask) {
task.expirationHandler = { task.setTaskCompleted(success: false) }
DataService.shared.fetchData { result in
switch result {
case .success:
ComplicationController.reloadComplications()
task.setTaskCompleted(success: true)
case .failure:
task.setTaskCompleted(success: false)
}
}
}
}
/// WKExtensionDelegate da fon vazifasini ro'yxatdan o'tkazish
class ExtensionDelegate: NSObject, WKExtensionDelegate {
let manager = BackgroundTaskManager()
func handle(_ backgroundTasks: Set<WKBackgroundTask>) {
for task in backgroundTasks {
switch task {
case let refreshTask as BGAppRefreshTask:
manager.handleAppRefresh(task: refreshTask)
default:
task.setTaskCompleted(success: false)
}
}
}
}BGTaskScheduler fon vazifalarining optimal paytlarda — soat zaryadlovchida va iPhone ga ulanganda bajarilishini kafolatlaydi. WKExtensionDelegate kiruvchi fon vazifalarini qayta ishlaydi va soat yuzidagi ma'lumotlarni yangilaydi. ComplicationController.reloadComplications tanlangan soat yuzidagi vidjetlarni yangilaydi.
watchOS 10 — 2023-yil sentyabrda chiqarilgan platforma tarixidagi eng katta interfeys yangilanishi. Tizim ierarxik navigatsiyadan kontentga yo'naltirilgan navigatsiyaga o'tdi: asosiy ekran Smart Stack — ilovalar dokini almashtirgan intellektual vidjetlar to'plami bo'ldi.
Smart Stack — soat yuzi ostida ko'rsatiladigan vidjetlarning vertikal ro'yxati. Vidjetlar kontekstga qarab tartiblanadi: ertalab ob-havo va kalendar, kun davomida faollik va eslatmalar, kechqurun meditatsiya va uyquga tayyorgarlik ko'rsatiladi. Ishlab chiquvchi iOS 17 uchun bir xil API lardan foydalanib WidgetKit orqali watchOS uchun maxsus vidjetlar qo'shishi mumkin.
Double Tap — ekranga tegmasdan akselerometr va giroskop tomonidan taniladigan ko'rsatkich va bosh barmoqni birlashtirish imo-ishorasi. Apple Watch Series 9 va Ultra 2 da imo-ishora Neural Engine orqali apparat darajasida bajariladi. Ishlab chiquvchi hodisani UIDoubleTapGestureRecognizer yoki SwiftUI modifikatori .onTapGesture(count: 2) orqali oladi. Imo-ishora kalibrlashni talab qilmaydi va qo'lning istalgan yo'nalishida ishlaydi.
watchOS 10 taqdim etdi: SwiftUI Animation Spring va Keyframe animatsiyalarini qo'llab-quvvatlash bilan, MapKit soatda xaritalarni ko'rsatish uchun, VideoPlayer qisqa videolarni (30 soniyagacha) o'ynatish uchun, yaxshilangan VoiceOver imo-ishoralar bilan va NavigationStack yangi navigatsiya paradigmasi NavigationView o'rniga.
| API | Maqsad | Mavjud |
|---|---|---|
| WidgetKit for watchOS | Smart Stack uchun vidjetlar | watchOS 10 |
| UIDoubleTapGesture | Double Tap imo-ishorasi | watchOS 10 (S9+) |
| MapKit | Soatda xaritalarni ko'rsatish | watchOS 10 |
| NavigationStack | Yangi navigatsiya paradigmasi | watchOS 10 |
| SwiftUI Keyframe | Kadr animatsiyasi | watchOS 10 |
SwiftUI — watchOS da interfeyslarni ishlab chiqish uchun asosiy freymvork. Apple watchOS 7 dan boshlab barcha yangi loyihalar uchun SwiftUI ni tavsiya qiladi. Soatlar uchun SwiftUI iOS bilan bir xil printsiplardan foydalanadi, ammo watchOS ga xos modifikatorlar va komponentlar bilan.
watchOS uchun SwiftUI o'z ichiga oladi: ekranlar o'rtasida surish uchun page-stilli TabView, g'ildirakning aylanishini qayta ishlash uchun DigitalCrownRotation, ishga tushirishlar o'rtasida holatni saqlash uchun SceneStorage, maxsus bildirishnomalar uchun WKNotificationScene va soat yuzidagi ma'lumotlar uchun ComplicationDescriptor.
import SwiftUI
import HealthKit
/// Puls monitoringi uchun watchOS ilovasi
@main
struct HeartMonitorApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
WKNotificationScene(
controller: NotificationController.self,
category: "heartAlert"
)
}
}
struct ContentView: View {
@State private var heartRate: Double = 0
private let healthStore = HKHealthStore()
var body: some View {
TabView {
HeartRateView(rate: heartRate)
.tabItem { Label("Puls", systemImage: "heart.fill") }
StepsView()
.tabItem { Label("Qadamlar", systemImage: "figure.walk") }
SettingsView()
.tabItem { Label("Sozlamalar", systemImage: "gear") }
}
.tabViewStyle(.page)
.onAppear(perform: setupHealthKit)
}
private func setupHealthKit() {
guard HKHealthStore.isHealthDataAvailable() else { return }
let heartType = HKQuantityType(.heartRate)
healthStore.requestAuthorization(toShare: nil, read: [heartType]) { success, error in
guard success else { return }
startHeartRateQuery()
}
}
private func startHeartRateQuery() {
let heartType = HKQuantityType(.heartRate)
let query = HKObserverQuery(sampleType: heartType, predicate: nil) { _, _, error in
guard error == nil else { return }
fetchLatestHeartRate()
}
healthStore.execute(query)
}
private func fetchLatestHeartRate() {
let heartType = HKQuantityType(.heartRate)
let sort = NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: false)
let query = HKSampleQuery(sampleType: heartType, predicate: nil,
limit: 1, sortDescriptors: [sort]) { _, samples, _ in
guard let sample = samples?.first as? HKQuantitySample else { return }
let rate = sample.quantity.doubleValue(for: HKUnit(from: "count/min"))
DispatchQueue.main.async { heartRate = rate }
}
healthStore.execute(query)
}
}
struct HeartRateView: View {
let rate: Double
var body: some View {
VStack(spacing: 12) {
Image(systemName: "heart.fill")
.foregroundStyle(.red)
.font(.system(size: 48))
.symbolEffect(.pulse)
Text("\(Int(rate))")
.font(.system(.title, design: .rounded))
.contentTransition(.numericText())
.bold()
Text("urish/daq")
.font(.caption)
.foregroundStyle(.secondary)
}
}
}HeartMonitorApp ilovasi SwiftUI da watchOS ilovasining odatdagi tuzilishini namoyish etadi: ekranlar o'rtasida surish uchun page-stilli TabView, real vaqtda pulsni o'qish uchun HealthKit bilan integratsiya, bildirishnomalarni qayta ishlash uchun WKNotificationScene. Pulse animatsiyali SymbolEffect CPU yuklamasidan silliq animatsiya uchun Neural Engine apparat tezlashtirishidan foydalanadi.
Digital Crown — Apple Watch ning yon panelidagi g'ildirak. SwiftUI g'ildirakning aylanishiga qiymat bog'lash uchun DigitalCrownRotation ni taqdim etadi. Modifikator binding, diapazon va qadam qabul qiladi. Imo-ishoralar: tap (tegish), longPress (uzun bosish), swipe (surish) va pan (tortish) — barchasi SwiftUI uchun standart va soat ekrani o'lchamiga moslashtirilgan.
WatchKit — UIKit yondashuvidan foydalanadigan original watchOS freymvorki. Apple SwiftUI ni tavsiya qilsa-da, WatchKit eski loyihalar va maxsus vazifalar uchun dolzarbligicha qoladi: WKInterfaceGroup da murakkab animatsiyalar va SiriKit bilan integratsiya.
watchOS ilovasi ikkita maqsaddan iborat: WatchKit Extension (mantiq va interfeys) va iOS Companion App (sozlamalar va sinxronizatsiya). Xcode 15 dan boshlab iOS hamrohisiz standalone ilova yaratish mumkin. Interfeys Interface.storyboard (WatchKit) yoki SwiftUI orqali dasturiy ravishda tavsiflanadi.
| Komponent | WatchKit | SwiftUI |
|---|---|---|
| Ekran | WKInterfaceController | View |
| Tugma | WKInterfaceButton | Button |
| Jadval | WKInterfaceTable | List |
| Guruh | WKInterfaceGroup | VStack / HStack |
| Rasm | WKInterfaceImage | Image / AsyncImage |
| Yorliq | WKInterfaceLabel | Text |
| Xarita | WKInterfaceMap | Map (watchOS 10+) |
| Soat yuzi | CLKComplicationDataSource | ComplicationDescriptor |
Complication — Apple Watch soat yuzida ma'lumotlarni ko'rsatadigan vidjet. Ishlab chiquvchi CLKComplicationDataSource protokolini amalga oshiradi va har xil turdagi soat yuzlari (circular, rectangular, modular, extraLarge) uchun shablonlarni taqdim etadi. watchOS 10 SwiftUI uchun soddalashtirilgan API ComplicationDescriptor ni qo'llab-quvvatlaydi. Ma'lumotlar 30 daqiqagacha davr bilan Background Tasks orqali yangilanadi.
Watch Connectivity — Bluetooth yoki Wi-Fi orqali Apple Watch va iPhone o'rtasida ma'lumot almashish uchun freymvork. Juftlangan qurilmalar o'rtasidagi yagona aloqa usuli. WCSession — sessiyani boshqaradigan markaziy sinf. iOS ilovasi va watchOS kengaytmasi WCSessionDelegate ni amalga oshirishi kerak.
Watch Connectivity to'rtta ma'lumot uzatish usulini taqdim etadi: sendMessage — tasdiqlash bilan zudlik bilan jo'natish (faqat ikkala ilova faol bo'lganda ishlaydi), transferUserInfo — ma'lumotlar lug'atining fon yetkazilishi, transferFile — metama'lumotlar bilan fayllarni uzatish, updateApplicationContext — umumiy holatni sinxronlashtirish. Barcha usullar aloqa tiklanganda yetkazilishni kafolatlaydi.
import WatchConnectivity
/// iPhone va Apple Watch o'rtasidagi sinxronizatsiya menejeri
final class ConnectivityManager: NSObject, WCSessionDelegate {
static let shared = ConnectivityManager()
private let session = WCSession.default
override private init() {
super.init()
session.delegate = self
session.activate()
}
// MARK: — iPhone dan soatga ma'lumot jo'natish
func sendWorkoutData(_ data: [String: Any]) {
guard session.isReachable else {
// Agar soat mavjud bo'lmasa — kontekstda saqlaymiz
try? session.updateApplicationContext(data)
return
}
session.sendMessage(data, replyHandler: nil) { error in
print("Send error: \(error.localizedDescription)")
}
}
// MARK: — Soatda ma'lumotlarni qabul qilish
func session(_ session: WCSession,
didReceiveMessage message: [String: Any]) {
DispatchQueue.main.async {
NotificationCenter.default.post(
name: NSNotification.Name("dataReceived"),
object: message
)
}
}
func session(_ session: WCSession,
activationDidCompleteWith activationState: WCSessionActivationState,
error: Error?) {
print("WCSession activated: \(activationState.rawValue)")
}
// watchOS da talab qilinmaydi, lekin protokol uchun majburiy
func sessionDidBecomeInactive(_ session: WCSession) {}
func sessionDidDeactivate(_ session: WCSession) {
session.activate()
}
}ConnectivityManager WCSession bilan ishlash uchun singltonni amalga oshiradi. sendWorkoutData isReachable ni tekshiradi: agar soat faol bo'lsa, ma'lumotlar sendMessage orqali zudlik bilan jo'natiladi; aks holda — kechiktirilgan yetkazilish uchun applicationContext da saqlanadi. Qabul qiluvchi tomonda onReceiveMessage kiruvchi xabarlarni qayta ishlaydi va NotificationCenter orqali ilovani xabardor qiladi.
transferFile katta hajmdagi ma'lumotlarni uzatish imkonini beradi: rasmlar, audio fayllar, arxivlar. Maksimal fayl hajmi — 100 MB. Fayllar qabul qiluvchi qurilmada Inbox papkasida saqlanadi. transferUserInfo 100 KB gacha bo'lgan JSON ma'lumotlari uchun mos keladi. Barcha usullar fonda ishlaydi: agar qurilma mavjud bo'lmasa, uzatish navbatga qo'yiladi va aloqa tiklanganda avtomatik ravishda davom etadi.
watchOS ilovasini nashr etish iOS bilan bir xil qoidalarga bo'ysunadi: Apple Developer Program obunasi (99 USD/yil) va App Review moderatsiyasidan o'tish talab qilinadi. Ilova App Store Connect ga iOS ilovasining bir qismi sifatida yoki standalone ilova sifatida yuklanadi.
watchOS ilovasi ikki usulda yetkazilishi mumkin: iOS ilovasining ichki kengaytmasi sifatida (iOS app bundle watchOS .app ni o'z ichiga oladi) yoki standalone ilova sifatida (iPhone siz yuklanadi va ishlaydi). Standalone rejim uchun Info.plist da WKRunsIndependently = YES talab qilinadi. watchOS ilovasining hajmi uyali aloqa tarmog'i orqali yuklash uchun 50 MB bilan cheklangan.
watchOS uchun maxsus talablar: ilova faol iPhone siz to'g'ri ishlashi kerak (standalone deb e'lon qilingan bo'lsa), interfeys kattalashtirmasdan o'qilishi mumkin bo'lishi kerak, barcha interaktiv elementlar — hajmda kamida 44 nuqta bo'lishi kerak. O'rnatilganlarning funksionalligini takrorlaydigan ilovalar taqiqlangan (masalan, qo'shimcha qiymatsiz puls o'lchagich).
| Talab | Tavsif |
|---|---|
| Ilova hajmi | Uyali yuklash uchun 50 MB gacha, Wi-Fi orqali 4 GB gacha |
| Standalone rejim | Info.plist da WKRunsIndependently = YES |
| Touch maqsadlari | Barcha interaktiv elementlar uchun kamida 44 pt |
| Xavfsizlik | HealthKit ma'lumotlari roziliksiz serverga uzatilishi mumkin emas |
| Samaradorlik | Ilovani ishga tushirish 5 soniyadan oshmasligi kerak |
Tez-tez beriladigan savollar
Asosiy til Swift freymvork SwiftUI bilan. UIKit dagi WatchKit ham qo'llab-quvvatlanadi, ammo Apple watchOS uchun barcha yangi loyihalarda SwiftUI ni tavsiya qiladi. Objective-C faqat 2019 yilgacha chiqarilgan eski ilovalarda ishlatiladi. watchOS 7 dan boshlab Apple ning barcha namunalari faqat SwiftUI dan foydalanadi.
watchOS 6 dan boshlab Apple Watch App Store dan iPhone siz to'g'ridan-to'g'ri ilovalarni o'rnatishi mumkin. Biroq ko'plab funksiyalar — ma'lumot sinxronizatsiyasi, push bildirishnomalari, geolokatsiya — iPhone bilan juftlashni talab qiladi. To'liq mustaqil ilovalar watchOS 9 va qurish sozlamalarida WKRunsIndependently bilan mumkin.
Apple Watch Series 9 ning odatdagi batareya muddati — aralash rejimda 18 soatgacha. GPS va puls o'lchagich bilan ilovadan faol foydalanishda — 5-7 soat. watchOS 10 Smart Stack va BGTaskScheduler orqali energiya iste'molini optimallashtiradi, ilovalarning fon faolligini watchOS 9 bilan solishtirganda 4 martagacha kamaytiradi.
Watch Connectivity freymvorki to'rtta usulni taqdim etadi: sendMessage (zudlik bilan uzatish), transferUserInfo (fon), transferFile (100 MB gacha fayllar) va updateApplicationContext (holat sinxronizatsiyasi). Barcha usullar Bluetooth yoki Wi-Fi orqali ishlaydi, aloqa uzilganda avtomatik navbatga qo'yiladi.
Apple Watch Series 9 va Ultra 2 o'z ichiga oladi: akselerometr, giroskop, optik va elektr puls o'lchagich, SpO2 (saturatsiya), bilak harorat sensori, barometr, kompas, GPS L1+L5 va mikrofon. Sensorlarga kirish — HealthKit va Core Motion orqali. Puls va SpO2 ma'lumotlari foydalanuvchining aniq ruxsatini talab qiladi.
Xulosa
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.