Companion App — τι είναι, ανάπτυξη εφαρμογών-συνοδών

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

Companion App — εφαρμογή-συνοδός για φορητές συσκευές Apple Watch και Wear OS, που λειτουργεί σε συνδυασμό με την κύρια εφαρμογή στο smartphone. Το Companion App συγχρονίζει δεδομένα μέσω WatchConnectivity (iOS) ή Wearable Data Layer (Android), εμφανίζει ειδοποιήσεις στο ρολόι και μπορεί να λειτουργεί αυτόνομα. Η ανάπτυξη γίνεται σε Swift για watchOS και Kotlin για Wear OS. Περισσότερα στο WatchConnectivity Docs.

Κύρια σημεία

  • Companion App — εφαρμογή για wearable που λειτουργεί με την κύρια εφαρμογή στο τηλέφωνο
  • WatchConnectivity — πλαίσιο ανταλλαγής δεδομένων μεταξύ iPhone και Apple Watch
  • Wearable Data Layer — API για συγχρονισμό εφαρμογής Android με Wear OS
  • Αυτόνομη λειτουργία — το ρολόι αποθηκεύει δεδομένα στην προσωρινή μνήμη και λειτουργεί χωρίς σύνδεση στο τηλέφωνο
  • Push ειδοποιήσεις — το companion εμφανίζει ειδοποιήσεις από το τηλέφωνο στον καρπό

Τι είναι το Companion App — εφαρμογή για wearable;

Companion App — εφαρμογή για φορητές συσκευές Apple Watch ή Wear OS, που παρέχεται μαζί με την κύρια εφαρμογή iOS ή Android. Κύριος στόχος είναι η επέκταση της λειτουργικότητας στον καρπό: γρήγορη προβολή πληροφοριών, απάντηση σε μηνύματα, έλεγχος μουσικής, παρακολούθηση προπονήσεων. Το Companion App εγκαθίσταται αυτόματα στο ρολόι κατά την εγκατάσταση της κύριας εφαρμογής στο τηλέφωνο, εάν ο προγραμματιστής το έχει συμπεριλάβει στο build.

Αρχιτεκτονική της εφαρμογής companion περιλαμβάνει δύο στοιχεία: την εφαρμογή iOS/Android (κύρια) και την εφαρμογή watchOS/Wear OS (συνοδός). Η επικοινωνία μεταξύ τους γίνεται μέσω συστημικών API: WatchConnectivity για την Apple και Wearable Data Layer για την Google. Τα δεδομένα μεταδίδονται στο παρασκήνιο μέσω Bluetooth ή Wi-Fi — ο χρήστης δεν βλέπει τη διαδικασία συγχρονισμού. Η εφαρμογή στο ρολόι μπορεί να έχει δικό της UI, διαφορετικό από το κινητό, προσαρμοσμένο στη μικρή οθόνη.

Τύποι εφαρμογών companion διαφέρουν ως προς τον βαθμό εξάρτησης από το τηλέφωνο. Εφαρμογές Mirroring εμφανίζουν αντίγραφο δεδομένων από το τηλέφωνο και δεν λειτουργούν χωρίς σύνδεση. Εφαρμογές Decoupled έχουν δική τους λογική, αποθηκεύουν δεδομένα στην προσωρινή μνήμη και διατηρούν μέρος της λειτουργικότητας όταν αποσυνδέονται από το τηλέφωνο. Εφαρμογές Independent (watchOS 6+ και Wear OS 3+) μπορούν να εγκατασταθούν χωρίς τηλέφωνο και να λειτουργούν πλήρως αυτόνομα με δική τους πρόσβαση στο δίκτυο.

WatchConnectivity: συγχρονισμός iPhone και Apple Watch

WatchConnectivity — πλαίσιο της Apple για αμφίδρομη επικοινωνία μεταξύ iPhone και Apple Watch. Παρέχει τέσσερις μηχανισμούς μεταφοράς δεδομένων: Application Context (τελευταία γνωστή κατάσταση), File Transfer (αρχεία οποιουδήποτε μεγέθους), User Info (λεξικά με εγγυημένη παράδοση) και Interactive Messaging (αμφίδρομη επικοινωνία σε πραγματικό χρόνο). Το σύστημα επιλέγει αυτόματα Bluetooth ή Wi-Fi ανάλογα με την απόσταση και την ποιότητα σήματος.

swift
import WatchConnectivity

class PhoneSessionManager: NSObject, WCSessionDelegate {
    func activateSession() {
        WCSession.default.delegate = self
        WCSession.default.activate()
    }
    func sendWorkoutData(_ data: WorkoutData) {
        let dict = ["heartRate": data.heartRate,
                     "calories": data.calories] as [String: Any]
        WCSession.default.transferUserInfo(dict)
    }
    func session(_: WCSession,
               didReceiveUserInfo: [String: Any]) {
        DispatchQueue.main.async {
            NotificationCenter.default.post(
                name: .workoutDataReceived,
                object: didReceiveUserInfo)
        }
    }
}

Interactive Messaging — ο μοναδικός μηχανισμός WatchConnectivity με εγγυημένη παράδοση σε πραγματικό χρόνο. Το μήνυμα αποστέλλεται και λαμβάνει απάντηση εντός 200–500 ms με ενεργή σύνδεση. Χρησιμοποιείται για ενέργειες που απαιτούν άμεση απάντηση: έναρξη προπόνησης, επιβεβαίωση πληρωμής, άνοιγμα πόρτας έξυπνου σπιτιού. Η συνεδρία πρέπει να είναι ενεργή και στις δύο συσκευές — εάν το ρολόι είναι κλειδωμένο ή η εφαρμογή στο παρασκήνιο, η παράδοση δεν είναι εγγυημένη.

File Transfer API προορίζεται για μεγάλους όγκους δεδομένων — εικόνες, αρχεία ήχου, εξαγόμενες προπονήσεις. Τα αρχεία μεταδίδονται στο παρασκήνιο ακόμα και όταν η εφαρμογή είναι κλειστή. Περιορισμός — έως 10 ταυτόχρονες μεταφορές στην ουρά. Application Context — ο πιο οικονομικός μηχανισμός: μεταφέρει μόνο την τελευταία κατάσταση, ακυρώνοντας προηγούμενα μη σταλμένα contexts. Ιδανικό για συγχρονισμό ρυθμίσεων και τρέχουσας κατάστασης.

Wearable Data Layer: συγχρονισμός Android και Wear OS

Wearable Data Layer — API από το Google Play Services για συγχρονισμό δεδομένων μεταξύ συσκευής Android και ρολογιού Wear OS. Παρέχει τρία πρωτόκολλα: DataItem (συγχρονισμός ζευγών κλειδιού-τιμής), MessageClient (μονόδρομα μηνύματα) και ChannelClient (μεταφορά δεδομένων ροής). Τα DataItems συγχρονίζονται αυτόματα μέσω Google Cloud — εάν το τηλέφωνο δεν είναι διαθέσιμο, τα δεδομένα παραδίδονται κατά την αποκατάσταση της σύνδεσης.

kotlin
class WearableSyncService : WearableListenerService() {
    override fun onDataChanged(dataEvents: DataEventBuffer) {
        dataEvents.forEach { event ->
            when (event.type) {
                DataEvent.TYPE_CHANGED -> {
                    val uri = event.dataItem.uri
                    val path = uri.path // /προπόνηση/καρδιακός_παλμός
                    val data = DataMapItem
                        .fromDataItem(event.dataItem)
                        .dataMap
                    val bpm = data.getInt("bpm")
                    updateUI(bpm)
                }
            }
        }
    }
}

MessageClient — στέλνει μονόδρομα μηνύματα με διαδρομή και πίνακα byte. Χρησιμοποιείται για εντολές: «Έναρξη προπόνησης», «Παύση μουσικής». Το μήνυμα παραδίδεται εγγυημένα εάν η συσκευή είναι συνδεδεμένη. Για λήψη μηνύματος σε Wear OS, υλοποιήστε το WearableListenerService και καταχωρίστε το στο manifest. Το MessageClient δεν υποστηρίζει αυτόματη προσωρινή αποθήκευση — εάν το ρολόι είναι αποσυνδεδεμένο, το μήνυμα χάνεται.

ChannelClient — πρωτόκολλο για δεδομένα ροής: ήχος, βίντεο, συνεχής ροή αισθητήρων. Ανοίγει ένα αμφίδρομο κανάλι μέσω του οποίου μεταδίδονται πίνακες byte. Υποστηρίζεται μόνο σε Wear OS 2.0+. Το ChannelClient είναι χρήσιμο για μεταφορά ήχου από το τηλέφωνο στο ρολόι για κλήσεις μέσω Bluetooth και για αναμετάδοση δεδομένων από εξωτερικούς αισθητήρες Bluetooth (μετρητής καρδιακών παλμών, ποδηλατικός υπολογιστής) μέσω τηλεφώνου στο ρολόι.

Αυτόνομη λειτουργία της εφαρμογής companion στο ρολόι

Αυτόνομη λειτουργία — ικανότητα της εφαρμογής companion να εκτελεί λειτουργίες χωρίς σύνδεση στο τηλέφωνο. Σε watchOS με μονάδα Cellular, η εφαρμογή στέλνει αιτήματα δικτύου απευθείας μέσω eSIM. Σε Wear OS με LTE, διατίθεται παρόμοια λειτουργικότητα. Ακόμα και χωρίς κινητή μονάδα, το ρολόι αποθηκεύει προσωρινά τα τελευταία δεδομένα από το τηλέφωνο και τα εμφανίζει κατά την αποσύνδεση — ο χρήστης βλέπει πληροφορίες που ήταν ενημερωμένες τη στιγμή του τελευταίου συγχρονισμού.

ΛειτουργίαΔεδομέναΔιαθεσιμότηταΠαράδειγμα
OnlineΖωντανά από διακομιστή/τηλέφωνοΠλήρηςΔιαδρομή πλοήγησης
CachedΤελευταία από τηλέφωνοΠεριορισμένηΛίστα επαφών
OfflineΤοπικά στο ρολόιΕλάχιστηΧρονόμετρο, στοπ χρονόμετρο

Προσωρινή αποθήκευση δεδομένων — βασικό στοιχείο αυτόνομης λειτουργίας. Η εφαρμογή πρέπει να αποθηκεύει την τελευταία ληφθείσα κατάσταση στην τοπική αποθήκευση του ρολογιού. Σε watchOS χρησιμοποιείται UserDefaults ή CoreData, σε Wear OS — Room Database ή DataStore. Κατά την αποκατάσταση της σύνδεσης, η προσωρινή μνήμη ενημερώνεται με συγχρονισμό παρασκηνίου. Εάν τα δεδομένα είναι παλαιότερα των 24 ωρών, η εφαρμογή εμφανίζει μήνυμα «Ανανεώστε τη σύνδεση με το τηλέφωνο».

Wearable UI για περιορισμένη οθόνη το ρολόι έχει οθόνη 1.5–2 ίντσες — η διεπαφή της εφαρμογής companion πρέπει να είναι όσο το δυνατόν πιο συνοπτική. Η Apple συνιστά NavigationView με μία στήλη σε watchOS, η Google — λίστα καρτών σε Wear OS με σάρωση για πλοήγηση. Τα κουμπιά πρέπει να έχουν μέγεθος τουλάχιστον 44pt για άνετο άγγιγμα. Αποφύγετε πεδία εισαγωγής κειμένου — χρησιμοποιήστε έτοιμες απαντήσεις, υπαγόρευση ή τον τροχό Digital Crown.

Ενεργειακά αποδοτικός σχεδιασμός — η εφαρμογή companion δεν πρέπει να εξαντλεί την μπαταρία του ρολογιού σε λίγες ώρες. Χρησιμοποιήστε ενημερώσεις παρασκηνίου με ελάχιστο διάστημα. Σε watchOS, το WatchConnectivity διακόπτει τη μετάδοση όταν η μπαταρία είναι χαμηλή και τη συνεχίζει μετά τη φόρτιση. Σε Wear OS, το Wearable Data Layer ομαδοποιεί αυτόματα μικρές μεταδόσεις σε μία για εξοικονόμηση ενέργειας. Wrist raise — ενημερώνετε το UI μόνο όταν ο χρήστης σηκώνει τον καρπό.

Βέλτιστες πρακτικές ανάπτυξης εφαρμογών companion

Η αρχιτεκτονική της εφαρμογής companion πρέπει να σχεδιαστεί λαμβάνοντας υπόψη την πιθανή απώλεια σύνδεσης. Χρησιμοποιήστε το μοτίβο Repository: μία ενιαία πηγή δεδομένων στο τηλέφωνο συγχρονίζεται με το τοπικό αποθετήριο στο ρολόι. Το ViewModel στο ρολόι εγγράφεται στο τοπικό αποθετήριο και εμφανίζει δεδομένα ανεξάρτητα από την κατάσταση σύνδεσης. Κατά την αποκατάσταση της σύνδεσης, το Repository στο ρολόι ζητά δεδομένα μέσω WatchConnectivity ή Wearable Data Layer και ενημερώνει την τοπική αποθήκευση.

kotlin
class WorkoutRepository constructor(
    private val localStorage: WorkoutDao,
    private val wearableClient: WearableClient
) {
    val workoutFlow: Flow<Workout?> = merge(
        localStorage.observeWorkout(),
        wearableClient.observeWorkout()
            .onEach { localStorage.save(it) }
    )
}

Δοκιμές της εφαρμογής companion απαιτούν έλεγχο σε πραγματικό ρολόι ή εξομοιωτή. Το Xcode υποστηρίζει προσομοιωτή Apple Watch σε συνδυασμό με προσομοιωτή iPhone — το WatchConnectivity μπορεί να δοκιμαστεί χωρίς φυσικές συσκευές. Το Android Studio περιλαμβάνει εξομοιωτή Wear OS με υποστήριξη Wearable Data Layer. Κρίσιμες δοκιμαστικές περιπτώσεις: απώλεια σύνδεσης κατά τη μετάδοση, χαμηλή μπαταρία, ταυτόχρονη λειτουργία δύο εφαρμογών companion και εγκατάσταση χωρίς τηλέφωνο σε standalone ρολόι.

Δημοσίευση της εφαρμογής companion σε watchOS δεν απαιτεί ξεχωριστή μεταφόρτωση στο App Store — η εφαρμογή αποτελεί μέρος του δυαδικού iOS και προσφέρεται αυτόματα για εγκατάσταση στο ρολόι. Σε Wear OS, η εφαρμογή companion δημοσιεύεται ξεχωριστά στο Google Play, αλλά συνδέεται με την κύρια εφαρμογή μέσω του ίδιου πακέτου. Το App Group σε iOS και το sharedUserId σε Android επιτρέπουν στην κύρια και τη συνοδό εφαρμογή να χρησιμοποιούν κοινό χώρο αποθήκευσης δεδομένων.

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

Σε τι διαφέρει το Companion App από μια συνηθισμένη εφαρμογή στο ρολόι;

Το Companion App απαιτεί εγκατεστημένη κύρια εφαρμογή σε iPhone ή Android για πλήρη λειτουργικότητα. Μια συνηθισμένη standalone εφαρμογή στο ρολόι (π.χ. πυξίδα ή χρονόμετρο) λειτουργεί αυτόνομα χωρίς τηλέφωνο. Το Companion App συγχρονίζει δεδομένα με το τηλέφωνο, εμφανίζει ειδοποιήσεις και επιτρέπει γρήγορες ενέργειες, αλλά χωρίς τηλέφωνο χάνει μέρος των λειτουργιών.

Πώς μεταδίδει δεδομένα το WatchConnectivity μεταξύ iPhone και Watch;

Το WatchConnectivity υποστηρίζει τέσσερις λειτουργίες: Application Context για μεταφορά τρέχουσας κατάστασης με ακύρωση προηγούμενης, File Transfer για αρχεία οποιουδήποτε μεγέθους, User Info για λεξικά δεδομένων με εγγυημένη παράδοση και Interactive Messaging για αμφίδρομη επικοινωνία σε πραγματικό χρόνο. Τα δεδομένα μεταδίδονται μέσω Bluetooth ή Wi-Fi — το σύστημα επιλέγει αυτόματα το βέλτιστο κανάλι.

Μπορεί το Companion App να λειτουργήσει χωρίς internet;

Ναι, η εφαρμογή companion λειτουργεί αυτόνομα — τα watchOS και Wear OS αποθηκεύουν προσωρινά δεδομένα που λαμβάνονται από το τηλέφωνο. Σε ρολόι με κινητή μονάδα, η εφαρμογή στέλνει αιτήματα απευθείας μέσω eSIM ή LTE. Τα προσωρινά αποθηκευμένα δεδομένα εμφανίζονται ακόμα και χωρίς σύνδεση. Κατά την αποκατάσταση της σύνδεσης, η προσωρινή μνήμη ενημερώνεται με συγχρονισμό παρασκηνίου.

Ποιοι τύποι εφαρμογών χρησιμοποιούν συχνότερα το Companion App;

Οι πιο δημοφιλείς κατηγορίες: ιχνηλάτες φυσικής κατάστασης με συγχρονισμό προπονήσεων, εφαρμογές ανταλλαγής μηνυμάτων για απάντηση σε μηνύματα από το ρολόι, πλοηγοί με οδηγίες στροφών στον καρπό, προγράμματα αναπαραγωγής μουσικής για έλεγχο αναπαραγωγής, συστήματα πληρωμών, έξυπνο σπίτι για έλεγχο συσκευών και ιατρικές οθόνες για παλμό και πίεση.

Πόση ενέργεια καταναλώνει το Companion App στο ρολόι;

Το Apple Watch παρέχει έως 18 ώρες λειτουργίας με ενεργή εφαρμογή companion σε κανονική χρήση. Wear OS — έως 24 ώρες. Το WatchConnectivity είναι βελτιστοποιημένο για χαμηλή κατανάλωση ενέργειας: η μετάδοση δεδομένων διακόπτεται όταν η μπαταρία είναι χαμηλή και ο μαζικός συγχρονισμός εκτελείται κατά τη φόρτιση του ρολογιού.

Σύνοψη

  • Companion App — εφαρμογή ρολογιού που λειτουργεί με την κύρια εφαρμογή στο τηλέφωνο
  • WatchConnectivity — πλαίσιο iOS με τέσσερις λειτουργίες μεταφοράς δεδομένων σε Apple Watch
  • Wearable Data Layer — API Android για συγχρονισμό με Wear OS μέσω DataItem και MessageClient
  • Αυτόνομη λειτουργία — προσωρινή αποθήκευση δεδομένων επιτρέπει λειτουργία όταν αποσυνδέεται από το τηλέφωνο
  • Κατανάλωση ενέργειας — έως 18 ώρες σε Apple Watch, έως 24 ώρες σε Wear OS
  • UI για ρολόι — συνοπτική διεπαφή με μεγάλα στοιχεία και ελάχιστο κείμενο
  • Δημοσίευση — το watchOS αποτελεί μέρος του δυαδικού iOS, το Wear OS δημοσιεύεται ξεχωριστά στο Google Play

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

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

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

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