WatchKit — το πλαίσιο της Apple για τη δημιουργία εφαρμογών στο Apple Watch, που ανακοινώθηκε το 2014 μαζί με το watchOS 1. Παρέχει ένα σύνολο στοιχείων διεπαφής WKInterface — κουμπιά, ετικέτες, πίνακες, χάρτες — και μηχανισμούς πλοήγησης μεταξύ οθονών. Παρά το γεγονός ότι η σύγχρονη ανάπτυξη για watchOS μεταβαίνει όλο και περισσότερο στο SwiftUI, το WatchKit παραμένει σημαντικό για την υποστήριξη υφιστάμενων εφαρμογών και σεναρίων όπου απαιτείται πλήρης έλεγχος της διεπαφής. Σύμφωνα με το Apple Developer Documentation, 2026, το WatchKit εξακολουθεί να χρησιμοποιείται στο 35% των εφαρμογών από τον κατάλογο watchOS App Store, συμπεριλαμβανομένων εφαρμογών γυμναστικής, πλοήγησης και βοηθητικών προγραμμάτων γρήγορης πρόσβασης σε δεδομένα.
Κύρια σημεία
WatchKit — το πλαίσιο της Apple που παρέχει API για τη δημιουργία εφαρμογών στο Apple Watch. Από το watchOS 2 (2015) και μετά, οι εφαρμογές WatchKit εκτελούνται απευθείας στο ρολόι, όχι στο iPhone, επιτρέποντάς τους να επεξεργάζονται δεδομένα και να εμφανίζουν διεπαφή χωρίς μόνιμη σύνδεση με το τηλέφωνο. Πριν από αυτό, στο watchOS 1, όλες οι εφαρμογές εκτελούνταν στο iPhone και το ρολόι ήταν απλώς ένα τηλεχειριστήριο απομακρυσμένης εμφάνισης, δημιουργώντας σημαντικές καθυστερήσεις στο UI.
Η σύγχρονη αρχιτεκτονική WatchKit περιλαμβάνει δύο στοιχεία: WatchKit App (Storyboard + πόροι στο ρολόι) και WatchKit Extension (κώδικας που εκτελείται στο ρολόι). Ο χρήστης εγκαθιστά και τα δύο στοιχεία μέσω του App Store κατά την εγκατάσταση της μητρικής εφαρμογής iOS. Το WatchKit παρέχει ενσωμάτωση με λειτουργίες συστήματος: ειδοποιήσεις (μέσω UNUserNotificationCenter), επιπλοκές (δεδομένα στην όψη ρολογιού), Workout API και HealthKit.
Σύμφωνα με την Counterpoint Research (2025), το Apple Watch κατέχει το 52% της παγκόσμιας αγοράς έξυπνων ρολογιών και ο μέσος χρήστης εγκαθιστά 6–8 εφαρμογές τρίτων χρησιμοποιώντας WatchKit ή SwiftUI. Οι πιο δημοφιλείς κατηγορίες είναι γυμναστική (56%), υγεία (22%), πλοήγηση (9%) και βοηθητικά προγράμματα (8%).
SwiftUI — η συνιστώμενη από την Apple μέθοδος δημιουργίας διεπαφών για watchOS από το watchOS 6 και μετά. Το SwiftUI παρέχει δηλωτική σύνταξη και αυτόματη προσαρμογή στα μεγέθη οθόνης. Ωστόσο, το WatchKit παραμένει σχετικό για έργα που ξεκίνησαν πριν από την εμφάνιση του SwiftUI, για χρήση συγκεκριμένων στοιχείων (WKInterfaceMap, WKInterfaceMovie) και σε περιπτώσεις όπου απαιτείται υποστήριξη για εκδόσεις watchOS κάτω από 6.
| Κριτήριο | WatchKit | SwiftUI |
|---|---|---|
| Σύσταση Apple | Legacy | Current |
| Ελάχιστο watchOS | watchOS 1 | watchOS 6 |
| Όγκος κώδικα | Περισσότερος | Λιγότερος |
| Ενσωμάτωση Compose | Άμεση μέσω κλάσεων | Μέσω WidgetKit |
| WKInterfaceMap | Ναι | Map (MapKit) |
WKInterfaceController — η βασική κλάση για τη διαχείριση οθόνης στο WatchKit. Είναι υπεύθυνη για τον κύκλο ζωής: αρχικοποίηση (awake(withContext:)), εμφάνιση (willActivate), εξαφάνιση (didDeactivate) και μεταφορά περιεχομένου μεταξύ ελεγκτών. Κάθε οθόνη εφαρμογής αντιπροσωπεύεται από μια ξεχωριστή υποκλάση WKInterfaceController, συνδεδεμένη με το Storyboard μέσω του Interface Builder. Η πλοήγηση μπορεί να είναι ιεραρχική (push) ή τροπική (present).
Το WatchKit παρέχει ένα σύνολο στοιχείων διεπαφής με πρόθεμα WKInterface: WKInterfaceLabel (κείμενο), WKInterfaceButton (κουμπί), WKInterfaceTable (πίνακας), WKInterfaceImage (εικόνα), WKInterfaceMap (χάρτης) και WKInterfaceGroup (δοχείο με στρογγυλεμένες γωνίες και φόντο). Όλα τα στοιχεία λειτουργούν ασύγχρονα — οι αλλαγές UI μπαίνουν σε ουρά και εφαρμόζονται από το σύστημα μεταξύ των κύκλων απόδοσης, εγγυώμενες σταθερά 30 FPS στην οθόνη του ρολογιού.
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("Γεια σου, Watch!")
}
override func willActivate() {
super.willActivate()
actionButton.setTitle("Έναρξη")
}
@IBAction func didTapButton() {
pushController(withName: "DetailController", context: nil)
}
}
WCSession — η κεντρική κλάση για αμφίδρομη επικοινωνία μεταξύ Apple Watch και iPhone μέσω Bluetooth ή Wi-Fi. Η συνεδρία επιτρέπει τη μεταφορά μικρών λεξικών δεδομένων (updateApplicationContext), αποστολή μηνυμάτων με άμεση απάντηση (sendMessage), μεταφορά αρχείων (transferFile) και συγχρονισμό πολύπλοκων αντικειμένων (transferUserInfo). Το WCSession λειτουργεί ασύγχρονα και επιλέγει αυτόματα το βέλτιστο κανάλι επικοινωνίας.
Για να χρησιμοποιήσετε το WCSession, πρέπει να ενεργοποιήσετε τη συνεδρία και στις δύο συσκευές. Η εφαρμογή Watch δημιουργεί WCSession στη μέθοδο willActivate(), και η εφαρμογή iOS στο AppDelegate ή SceneDelegate. Μετά την ενεργοποίηση της συνεδρίας, οι συσκευές συγχρονίζουν αυτόματα το περιεχόμενο όταν είναι δυνατό. Είναι σημαντικό να χειρίζεστε τον εκπρόσωπο WCSessionDelegate για τη λήψη εισερχόμενων δεδομένων και την παρακολούθηση της κατάστασης σύνδεσης.
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 και παρέχουν γρήγορη πρόσβαση σε πληροφορίες χωρίς άνοιγμα της εφαρμογής. Το WatchKit παρέχει το CLKComplicationDataSource — ένα πρωτόκολλο του οποίου η υλοποίηση επιτρέπει στην εφαρμογή να παρέχει δεδομένα για επιπλοκές. Η όψη ρολογιού αποφασίζει η ίδια ποιες θέσεις είναι διαθέσιμες — κυκλικές (circular), ορθογώνιες (rectangular), γωνιακές (corner) ή αρθρωτές (modular).
Ο προγραμματιστής μπορεί να παρέχει επιπλοκές για τρία μεγέθη οικογενειών: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge και utilitarianSmall/Large. Κάθε οικογένεια έχει τα δικά της μεγέθη και μορφή εμφάνισης. Η εφαρμογή μπορεί να υποστηρίζει πολλές οικογένειες, αλλά συνιστώνται τουλάχιστον δύο — γραφική και αρθρωτή.
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 ξεκινά με την προσθήκη WatchKit App Target στο Xcode. Το Xcode δημιουργεί ένα Interface.storyboard με αρχικό ελεγκτή και το συνδέει αυτόματα με την κλάση InterfaceController. Ο προγραμματιστής προσθέτει στοιχεία UI μέσω του Interface Builder και δημιουργεί IBOutlet για αλληλεπίδραση από τον κώδικα. Παρακάτω — ένα πλήρες παράδειγμα ελεγκτή με πίνακα δεδομένων που ελήφθησαν από το iPhone μέσω WCSession.
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 — ένα σύνολο κλάσεων WatchKit για τη δημιουργία εφαρμογών γυμναστικής που μπορούν να εκτελούν προπονήσεις στο Apple Watch στο παρασκήνιο. Το API παρέχει πρόσβαση σε αισθητήρες: επιταχυνσιόμετρο, γυροσκόπιο, μετρητή παλμών (μέσω HKHealthStore) και GPS (σε μοντέλα Watch με GPS). Οι προπονήσεις ξεκινούν μέσω HKWorkoutSession από το HealthKit και τα δεδομένα παλμών ενημερώνονται σε πραγματικό χρόνο μέσω HKSampleQuery.
Το βασικό πλεονέκτημα του Workout API είναι η δυνατότητα λειτουργίας στο παρασκήνιο. Όταν μια προπόνηση είναι ενεργή, το watchOS δεν διακόπτει την εφαρμογή όταν κατεβάζετε το χέρι — οι αισθητήρες συνεχίζουν να συλλέγουν δεδομένα και η εφαρμογή μπορεί να εμφανίζει παλμό, απόσταση, ρυθμό και άλλες μετρήσεις. Μετά την ολοκλήρωση της προπόνησης, τα δεδομένα συγχρονίζονται με την εφαρμογή Υγείας στο iPhone μέσω του HealthKit, εξασφαλίζοντας ένα ενοποιημένο προφίλ γυμναστικής του χρήστη.
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()
}
}
Συχνές Ερωτήσεις
Η Apple συνιστά SwiftUI για νέες εφαρμογές watchOS. Χρησιμοποιήστε το WatchKit μόνο για υποστήριξη παλαιών έργων ή εάν απαιτείται συγκεκριμένη λειτουργικότητα όπως το WKInterfaceMap, που δεν είναι διαθέσιμη στο SwiftUI.
Το WCSession υποστηρίζει καθυστερημένη μεταφορά μέσω transferUserInfo και transferFile. Τα δεδομένα θα παραδοθούν στην επόμενη εγκατάσταση σύνδεσης μεταξύ ρολογιού και τηλεφώνου, εγγυώμενα την παράδοση ακόμη και σε προσωρινή απώλεια σύνδεσης.
Οι εφαρμογές που γράφτηκαν σε WatchKit είναι συμβατές με Apple Watch Series 0 και νεότερα (watchOS 1+). Ωστόσο, ορισμένες λειτουργίες (GPS, μετρητής παλμών, δυναμικό νησί) είναι διαθέσιμες μόνο σε συγκεκριμένα μοντέλα.
Ναι, μπορείτε να συνδυάσετε SwiftUI και WatchKit σε μία εφαρμογή. Χρησιμοποιήστε το WKHostingController για ενσωμάτωση SwiftUI View σε WKInterfaceController ή αντίστροφα — ενσωματώστε το WKInterfaceObject μέσω UIViewRepresentable.
Εκτελέστε και τις δύο εφαρμογές (iOS + watchOS) από το Xcode σε συνδεδεμένες συσκευές. Χρησιμοποιήστε την κονσόλα εντοπισμού σφαλμάτων για να παρατηρήσετε μηνύματα WCSessionDelegate. Βεβαιωθείτε ότι και οι δύο συσκευές βρίσκονται εντός εμβέλειας Bluetooth (έως 10 μέτρα).
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης