WatchKit — τι είναι, το πλαίσιο του Apple Watch και watchOS

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-06-16 Χρόνος ανάγνωσης: 8 λεπ

WatchKit — το πλαίσιο της Apple για τη δημιουργία εφαρμογών στο Apple Watch, που ανακοινώθηκε το 2014 μαζί με το watchOS 1. Παρέχει ένα σύνολο στοιχείων διεπαφής WKInterface — κουμπιά, ετικέτες, πίνακες, χάρτες — και μηχανισμούς πλοήγησης μεταξύ οθονών. Παρά το γεγονός ότι η σύγχρονη ανάπτυξη για watchOS μεταβαίνει όλο και περισσότερο στο SwiftUI, το WatchKit παραμένει σημαντικό για την υποστήριξη υφιστάμενων εφαρμογών και σεναρίων όπου απαιτείται πλήρης έλεγχος της διεπαφής. Σύμφωνα με το Apple Developer Documentation, 2026, το WatchKit εξακολουθεί να χρησιμοποιείται στο 35% των εφαρμογών από τον κατάλογο watchOS App Store, συμπεριλαμβανομένων εφαρμογών γυμναστικής, πλοήγησης και βοηθητικών προγραμμάτων γρήγορης πρόσβασης σε δεδομένα.

Κύρια σημεία

  • WatchKit — το πλαίσιο της Apple για τη δημιουργία εφαρμογών στο Apple Watch, που χρησιμοποιεί στοιχεία UI WKInterface και πλοήγηση βασισμένη στο WKInterfaceController.
  • WKInterfaceController — η κύρια κλάση της οθόνης εφαρμογής, παρόμοια με το UIViewController στο iOS, με διαχείριση κύκλου ζωής και ιεραρχίας.
  • WCSession — μηχανισμός επικοινωνίας μεταξύ Apple Watch και iPhone, που επιτρέπει τη μεταφορά δεδομένων, αρχείων και περιεχομένου μέσω Bluetooth.
  • WKInterfaceDevice — πληροφορίες συσκευής: μέγεθος οθόνης, μοντέλο, έκδοση watchOS και δυνατότητες στοιχείων υλικού.
  • Complications Controller — API για εμφάνιση δεδομένων στην όψη ρολογιού, ενεργοποιημένο μέσω CLKComplicationDataSource.

Τι είναι το WatchKit και πώς λειτουργεί;

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%).

WatchKit εναντίον SwiftUI για watchOS

SwiftUI — η συνιστώμενη από την Apple μέθοδος δημιουργίας διεπαφών για watchOS από το watchOS 6 και μετά. Το SwiftUI παρέχει δηλωτική σύνταξη και αυτόματη προσαρμογή στα μεγέθη οθόνης. Ωστόσο, το WatchKit παραμένει σχετικό για έργα που ξεκίνησαν πριν από την εμφάνιση του SwiftUI, για χρήση συγκεκριμένων στοιχείων (WKInterfaceMap, WKInterfaceMovie) και σε περιπτώσεις όπου απαιτείται υποστήριξη για εκδόσεις watchOS κάτω από 6.

ΚριτήριοWatchKitSwiftUI
Σύσταση AppleLegacyCurrent
Ελάχιστο watchOSwatchOS 1watchOS 6
Όγκος κώδικαΠερισσότεροςΛιγότερος
Ενσωμάτωση ComposeΆμεση μέσω κλάσεωνΜέσω WidgetKit
WKInterfaceMapΝαιMap (MapKit)

Διεπαφή WatchKit: WKInterfaceController και στοιχεία

WKInterfaceController — η βασική κλάση για τη διαχείριση οθόνης στο WatchKit. Είναι υπεύθυνη για τον κύκλο ζωής: αρχικοποίηση (awake(withContext:)), εμφάνιση (willActivate), εξαφάνιση (didDeactivate) και μεταφορά περιεχομένου μεταξύ ελεγκτών. Κάθε οθόνη εφαρμογής αντιπροσωπεύεται από μια ξεχωριστή υποκλάση WKInterfaceController, συνδεδεμένη με το Storyboard μέσω του Interface Builder. Η πλοήγηση μπορεί να είναι ιεραρχική (push) ή τροπική (present).

Το WatchKit παρέχει ένα σύνολο στοιχείων διεπαφής με πρόθεμα WKInterface: WKInterfaceLabel (κείμενο), WKInterfaceButton (κουμπί), WKInterfaceTable (πίνακας), WKInterfaceImage (εικόνα), WKInterfaceMap (χάρτης) και WKInterfaceGroup (δοχείο με στρογγυλεμένες γωνίες και φόντο). Όλα τα στοιχεία λειτουργούν ασύγχρονα — οι αλλαγές UI μπαίνουν σε ουρά και εφαρμόζονται από το σύστημα μεταξύ των κύκλων απόδοσης, εγγυώμενες σταθερά 30 FPS στην οθόνη του ρολογιού.

Βασικό 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("Γεια σου, Watch!")
    }
    
    override func willActivate() {
        super.willActivate()
        actionButton.setTitle("Έναρξη")
    }
    
    @IBAction func didTapButton() {
        pushController(withName: "DetailController", context: nil)
    }
}

WCSession: επικοινωνία μεταξύ Watch και iPhone

WCSession — η κεντρική κλάση για αμφίδρομη επικοινωνία μεταξύ Apple Watch και iPhone μέσω Bluetooth ή Wi-Fi. Η συνεδρία επιτρέπει τη μεταφορά μικρών λεξικών δεδομένων (updateApplicationContext), αποστολή μηνυμάτων με άμεση απάντηση (sendMessage), μεταφορά αρχείων (transferFile) και συγχρονισμό πολύπλοκων αντικειμένων (transferUserInfo). Το WCSession λειτουργεί ασύγχρονα και επιλέγει αυτόματα το βέλτιστο κανάλι επικοινωνίας.

Για να χρησιμοποιήσετε το WCSession, πρέπει να ενεργοποιήσετε τη συνεδρία και στις δύο συσκευές. Η εφαρμογή Watch δημιουργεί WCSession στη μέθοδο willActivate(), και η εφαρμογή iOS στο AppDelegate ή SceneDelegate. Μετά την ενεργοποίηση της συνεδρίας, οι συσκευές συγχρονίζουν αυτόματα το περιεχόμενο όταν είναι δυνατό. Είναι σημαντικό να χειρίζεστε τον εκπρόσωπο WCSessionDelegate για τη λήψη εισερχόμενων δεδομένων και την παρακολούθηση της κατάστασης σύνδεσης.

Παράδειγμα WCSession στην πλευρά Watch

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: δεδομένα στην όψη ρολογιού

Complications — μικρά στοιχεία δεδομένων που εμφανίζονται στην όψη του Apple Watch και παρέχουν γρήγορη πρόσβαση σε πληροφορίες χωρίς άνοιγμα της εφαρμογής. Το WatchKit παρέχει το CLKComplicationDataSource — ένα πρωτόκολλο του οποίου η υλοποίηση επιτρέπει στην εφαρμογή να παρέχει δεδομένα για επιπλοκές. Η όψη ρολογιού αποφασίζει η ίδια ποιες θέσεις είναι διαθέσιμες — κυκλικές (circular), ορθογώνιες (rectangular), γωνιακές (corner) ή αρθρωτές (modular).

Ο προγραμματιστής μπορεί να παρέχει επιπλοκές για τρία μεγέθη οικογενειών: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge και utilitarianSmall/Large. Κάθε οικογένεια έχει τα δικά της μεγέθη και μορφή εμφάνισης. Η εφαρμογή μπορεί να υποστηρίζει πολλές οικογένειες, αλλά συνιστώνται τουλάχιστον δύο — γραφική και αρθρωτή.

Παράδειγμα CLKComplicationDataSource

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

Παράδειγμα εφαρμογής WatchKit σε Swift

Η δημιουργία εφαρμογής WatchKit ξεκινά με την προσθήκη WatchKit App Target στο Xcode. Το Xcode δημιουργεί ένα Interface.storyboard με αρχικό ελεγκτή και το συνδέει αυτόματα με την κλάση InterfaceController. Ο προγραμματιστής προσθέτει στοιχεία UI μέσω του Interface Builder και δημιουργεί IBOutlet για αλληλεπίδραση από τον κώδικα. Παρακάτω — ένα πλήρες παράδειγμα ελεγκτή με πίνακα δεδομένων που ελήφθησαν από το iPhone μέσω WCSession.

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

Workout API για εφαρμογές γυμναστικής

Workout API — ένα σύνολο κλάσεων WatchKit για τη δημιουργία εφαρμογών γυμναστικής που μπορούν να εκτελούν προπονήσεις στο Apple Watch στο παρασκήνιο. Το API παρέχει πρόσβαση σε αισθητήρες: επιταχυνσιόμετρο, γυροσκόπιο, μετρητή παλμών (μέσω HKHealthStore) και GPS (σε μοντέλα Watch με GPS). Οι προπονήσεις ξεκινούν μέσω HKWorkoutSession από το HealthKit και τα δεδομένα παλμών ενημερώνονται σε πραγματικό χρόνο μέσω HKSampleQuery.

Το βασικό πλεονέκτημα του Workout API είναι η δυνατότητα λειτουργίας στο παρασκήνιο. Όταν μια προπόνηση είναι ενεργή, το watchOS δεν διακόπτει την εφαρμογή όταν κατεβάζετε το χέρι — οι αισθητήρες συνεχίζουν να συλλέγουν δεδομένα και η εφαρμογή μπορεί να εμφανίζει παλμό, απόσταση, ρυθμό και άλλες μετρήσεις. Μετά την ολοκλήρωση της προπόνησης, τα δεδομένα συγχρονίζονται με την εφαρμογή Υγείας στο iPhone μέσω του HealthKit, εξασφαλίζοντας ένα ενοποιημένο προφίλ γυμναστικής του χρήστη.

Έναρξη προπόνησης με αισθητήρες

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

Συχνές Ερωτήσεις

Αξίζει να χρησιμοποιήσετε το WatchKit σε ένα νέο έργο;

Η Apple συνιστά SwiftUI για νέες εφαρμογές watchOS. Χρησιμοποιήστε το WatchKit μόνο για υποστήριξη παλαιών έργων ή εάν απαιτείται συγκεκριμένη λειτουργικότητα όπως το WKInterfaceMap, που δεν είναι διαθέσιμη στο SwiftUI.

Πώς να μεταφέρετε δεδομένα από το Watch στο iPhone χωρίς σύνδεση;

Το WCSession υποστηρίζει καθυστερημένη μεταφορά μέσω transferUserInfo και transferFile. Τα δεδομένα θα παραδοθούν στην επόμενη εγκατάσταση σύνδεσης μεταξύ ρολογιού και τηλεφώνου, εγγυώμενα την παράδοση ακόμη και σε προσωρινή απώλεια σύνδεσης.

Λειτουργούν οι εφαρμογές WatchKit σε όλα τα μοντέλα Apple Watch;

Οι εφαρμογές που γράφτηκαν σε WatchKit είναι συμβατές με Apple Watch Series 0 και νεότερα (watchOS 1+). Ωστόσο, ορισμένες λειτουργίες (GPS, μετρητής παλμών, δυναμικό νησί) είναι διαθέσιμες μόνο σε συγκεκριμένα μοντέλα.

Μπορούν να χρησιμοποιηθούν SwiftUI και WatchKit στην ίδια εφαρμογή;

Ναι, μπορείτε να συνδυάσετε SwiftUI και WatchKit σε μία εφαρμογή. Χρησιμοποιήστε το WKHostingController για ενσωμάτωση SwiftUI View σε WKInterfaceController ή αντίστροφα — ενσωματώστε το WKInterfaceObject μέσω UIViewRepresentable.

Πώς να κάνετε εντοπισμό σφαλμάτων WCSession σε πραγματικές συσκευές;

Εκτελέστε και τις δύο εφαρμογές (iOS + watchOS) από το Xcode σε συνδεδεμένες συσκευές. Χρησιμοποιήστε την κονσόλα εντοπισμού σφαλμάτων για να παρατηρήσετε μηνύματα WCSessionDelegate. Βεβαιωθείτε ότι και οι δύο συσκευές βρίσκονται εντός εμβέλειας Bluetooth (έως 10 μέτρα).

Σύνοψη

  • WatchKit — το πλαίσιο της Apple για τη δημιουργία εφαρμογών στο Apple Watch, χρησιμοποιώντας στοιχεία UI WKInterface και ελεγκτές WKInterfaceController.
  • WCSession — ο κεντρικός μηχανισμός αμφίδρομης επικοινωνίας μεταξύ Watch και iPhone μέσω Bluetooth/Wi-Fi με υποστήριξη μηνυμάτων, αρχείων και περιεχομένου.
  • Complications — δεδομένα στην όψη Apple Watch μέσω CLKComplicationDataSource με υποστήριξη 9 οικογενειών εμφάνισης.
  • Workout API — σύνολο κλάσεων για εφαρμογές γυμναστικής με συλλογή δεδομένων παλμών, GPS και επιταχυνσιόμετρου στο παρασκήνιο μέσω HKWorkoutSession.
  • SwiftUI — η συνιστώμενη από την Apple προσέγγιση για νέα έργα, αλλά το WatchKit παραμένει σχετικό για παλαιές εφαρμογές και συγκεκριμένη λειτουργικότητα.
  • Συνδυασμός WatchKit και SwiftUI σε μία εφαρμογή είναι δυνατός μέσω WKHostingController και UIViewRepresentable.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης