Companion App — cos'è, sviluppo di applicazioni compagne

Autore: IT Sectr Pubblicato: 2026-02-16 Tempo di lettura: 9 min

Companion App — un'applicazione compagna per dispositivi indossabili Apple Watch e Wear OS, che funziona in coppia con l'applicazione principale sullo smartphone. Companion App sincronizza i dati tramite WatchConnectivity (iOS) o Wearable Data Layer (Android), mostra le notifiche sull'orologio e può funzionare in modo autonomo. Lo sviluppo avviene in Swift per watchOS e Kotlin per Wear OS. Maggiori informazioni su WatchConnectivity Docs.

Punti chiave

  • Companion App — un'applicazione wearable che funziona con l'app principale sul telefono
  • WatchConnectivity — un framework per lo scambio di dati tra iPhone e Apple Watch
  • Wearable Data Layer — un'API per sincronizzare l'app Android con Wear OS
  • Funzionamento autonomo — l'orologio memorizza nella cache i dati e funziona senza connessione al telefono
  • Notifiche push — il companion mostra le notifiche del telefono al polso

Cos'è Companion App — un'applicazione per wearable?

Companion App — un'applicazione per dispositivi indossabili Apple Watch o Wear OS fornita insieme all'app principale iOS o Android. L'obiettivo principale è estendere le funzionalità al polso: visualizzazione rapida delle informazioni, risposta ai messaggi, controllo della musica, monitoraggio degli allenamenti. Companion App viene installata automaticamente sull'orologio quando si installa l'app principale sul telefono, se lo sviluppatore l'ha inclusa nella build.

Architettura di un'app companion comprende due componenti: l'app iOS/Android (principale) e l'app watchOS/Wear OS (compagna). La comunicazione tra di esse avviene tramite API di sistema: WatchConnectivity per Apple e Wearable Data Layer per Google. I dati vengono trasferiti in background via Bluetooth o Wi-Fi — l'utente non vede il processo di sincronizzazione. L'app sull'orologio può avere una propria interfaccia utente, diversa da quella mobile, adattata a un piccolo schermo.

Tipi di app companion si differenziano per il grado di dipendenza dal telefono. Le app specchio mostrano una copia dei dati del telefono e non funzionano senza connessione. Le app disaccoppiate hanno una propria logica, memorizzano i dati nella cache e mantengono parte delle funzionalità quando sono disconnesse dal telefono. Le app indipendenti (watchOS 6+ e Wear OS 3+) possono essere installate senza telefono e funzionare in modo completamente autonomo con proprio accesso alla rete.

WatchConnectivity: sincronizzazione di iPhone e Apple Watch

WatchConnectivity — il framework di Apple per la comunicazione bidirezionale tra iPhone e Apple Watch. Fornisce quattro meccanismi di trasferimento dati: Application Context (ultimo stato noto), File Transfer (file di qualsiasi dimensione), User Info (dizionari con consegna garantita) e Interactive Messaging (comunicazione bidirezionale in tempo reale). Il sistema sceglie automaticamente Bluetooth o Wi-Fi in base alla distanza e alla qualità del segnale.

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 — l'unico meccanismo di WatchConnectivity con consegna garantita in tempo reale. Un messaggio viene inviato e riceve una risposta entro 200–500 ms quando la connessione è attiva. Viene utilizzato per azioni che richiedono una risposta immediata: avviare un allenamento, confermare un pagamento, aprire una porta di casa intelligente. La sessione deve essere attiva su entrambi i dispositivi — se l'orologio è bloccato o l'app è in background, la consegna non è garantita.

File Transfer API è progettato per grandi volumi di dati — immagini, file audio, allenamenti esportati. I file vengono trasferiti in background anche quando l'app è chiusa. Il limite è di 10 trasferimenti simultanei in coda. Application Context è il meccanismo più economico: trasmette solo l'ultimo stato, annullando i contesti precedenti non inviati. È ideale per sincronizzare impostazioni e stato corrente.

Wearable Data Layer: sincronizzazione di Android e Wear OS

Wearable Data Layer — un'API di Google Play Services per sincronizzare i dati tra un dispositivo Android e gli orologi Wear OS. Fornisce tre protocolli: DataItem (sincronizzazione di coppie chiave-valore), MessageClient (messaggi unidirezionali) e ChannelClient (dati in streaming). I DataItem vengono sincronizzati automaticamente tramite Google Cloud — se il telefono non è disponibile, i dati vengono consegnati quando la connessione viene ripristinata.

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 // /workout/heartrate
                    val data = DataMapItem
                        .fromDataItem(event.dataItem)
                        .dataMap
                    val bpm = data.getInt("bpm")
                    updateUI(bpm)
                }
            }
        }
    }
}

MessageClient — invia messaggi unidirezionali con un percorso e un array di byte. Viene utilizzato per comandi come "Avvia allenamento" o "Metti in pausa musica". Il messaggio viene consegnato in modo affidabile se il dispositivo è connesso. Per ricevere messaggi su Wear OS, implementare WearableListenerService e registrarlo nel manifest. MessageClient non supporta la cache automatica — se l'orologio è disconnesso, il messaggio viene perso.

ChannelClient — un protocollo per dati in streaming: audio, video, flussi continui di sensori. Apre un canale bidirezionale attraverso il quale vengono trasmessi array di byte. È supportato solo su Wear OS 2.0+. ChannelClient è utile per trasmettere audio dal telefono all'orologio per le chiamate tramite Bluetooth e per ritrasmettere dati da sensori Bluetooth esterni (monitor della frequenza cardiaca, ciclocomputer) attraverso il telefono all'orologio.

Funzionamento autonomo dell'app companion sull'orologio

Funzionamento autonomo — la capacità di un'app companion di funzionare senza connessione al telefono. Su watchOS con modulo Cellular, l'app invia richieste di rete direttamente tramite eSIM. Su Wear OS con LTE, è disponibile una funzionalità simile. Anche senza modulo cellulare, l'orologio memorizza nella cache i dati più recenti dal telefono e li mostra quando è disconnesso — l'utente vede le informazioni aggiornate al momento dell'ultima sincronizzazione.

ModalitàDatiDisponibilitàEsempio
OnlineIn diretta dal server/telefonoCompletaPercorso di navigazione
In cacheUltimi dal telefonoLimitataElenco contatti
OfflineLocali sull'orologioMinimaTimer, cronometro

Memorizzazione nella cache — un elemento chiave del funzionamento autonomo. L'app deve salvare l'ultimo stato ricevuto nella memoria locale dell'orologio. Su watchOS si utilizzano UserDefaults o CoreData, su Wear OS — Room Database o DataStore. Quando la connessione viene ripristinata, la cache viene aggiornata tramite sincronizzazione in background. Se i dati hanno più di 24 ore, l'app mostra un messaggio "Aggiorna la connessione al telefono".

Interfaccia wearable per schermo limitato — l'orologio ha uno schermo di 1,5–2 pollici — l'interfaccia dell'app companion deve essere il più concisa possibile. Apple raccomanda NavigationView a una colonna su watchOS, Google raccomanda un elenco di carte su Wear OS con scorrimento per la navigazione. I pulsanti devono avere almeno 44pt per un tocco confortevole. Evitare campi di inserimento testo — utilizzare risposte predefinite, dettatura o la rotella di scorrimento Digital Crown.

Design efficiente dal punto di vista energetico — l'app companion non deve scaricare la batteria dell'orologio in poche ore. Utilizzare aggiornamenti in background con intervallo minimo. Su watchOS, WatchConnectivity mette in pausa i trasferimenti quando la batteria è bassa e li riprende dopo la ricarica. Su Wear OS, Wearable Data Layer raggruppa automaticamente i piccoli trasferimenti in uno per risparmiare energia. Wrist raise — aggiornare l'interfaccia solo quando l'utente solleva il polso.

Migliori pratiche di sviluppo delle app companion

Architettura dell'app companion dovrebbe essere progettata tenendo conto di una possibile perdita di connessione. Utilizzare il pattern Repository: un'unica fonte di dati sul telefono si sincronizza con il repository locale sull'orologio. Il ViewModel sull'orologio si sottoscrive al repository locale e mostra i dati indipendentemente dallo stato della connessione. Quando la connessione viene ripristinata, il Repository sull'orologio richiede dati tramite WatchConnectivity o Wearable Data Layer e aggiorna l'archiviazione locale.

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

Test di un'app companion richiedono la verifica su orologi reali o un emulatore. Xcode supporta il simulatore Apple Watch abbinato al simulatore iPhone — è possibile testare WatchConnectivity senza dispositivi fisici. Android Studio include un emulatore Wear OS con supporto per Wearable Data Layer. Casi di test critici: perdita di connessione durante il trasferimento, batteria scarica, funzionamento simultaneo di due app companion e installazione senza telefono su orologi autonomi.

Pubblicazione di un'app companion su watchOS non richiede un caricamento separato sull'App Store — l'app è inclusa nel binario dell'app iOS e viene automaticamente offerta per l'installazione sull'orologio. Su Wear OS, l'app companion viene pubblicata separatamente su Google Play ma è collegata all'app principale tramite lo stesso pacchetto. App Group su iOS e sharedUserId su Android consentono all'app principale e all'app companion di utilizzare uno spazio di archiviazione dati condiviso.

Domande frequenti

In cosa si differenzia Companion App da una normale app sull'orologio?

Companion App richiede l'app principale installata su iPhone o Android per la piena funzionalità. Una normale app autonoma sull'orologio (ad esempio, bussola o cronometro) funziona autonomamente senza telefono. Companion App sincronizza i dati con il telefono, mostra le notifiche e consente di eseguire azioni rapide, ma senza telefono perde alcune funzioni.

Come trasferisce WatchConnectivity i dati tra iPhone e Watch?

WatchConnectivity supporta quattro modalità: Application Context per trasmettere lo stato corrente annullando il precedente, File Transfer per file di qualsiasi dimensione, User Info per dizionari di dati con consegna garantita e Interactive Messaging per comunicazione bidirezionale in tempo reale. I dati vengono trasmessi tramite Bluetooth o Wi-Fi — il sistema seleziona automaticamente il canale ottimale.

Companion App può funzionare senza Internet?

Sì, un'app companion funziona autonomamente — watchOS e Wear OS memorizzano nella cache i dati ricevuti dal telefono. Su orologi con modulo cellulare, l'app invia richieste direttamente tramite eSIM o LTE. I dati memorizzati nella cache vengono visualizzati anche senza connessione. Quando la connessione viene ripristinata, la cache viene aggiornata tramite sincronizzazione in background.

Quali tipi di app utilizzano più spesso Companion App?

Le categorie più popolari: tracker fitness con sincronizzazione degli allenamenti, messaggeri per rispondere ai messaggi dall'orologio, navigatori con indicazioni di svolta al polso, lettori musicali per il controllo della riproduzione, sistemi di pagamento, casa intelligente per il controllo dei dispositivi e monitor medici per frequenza cardiaca e pressione sanguigna.

Quanta energia consuma Companion App sull'orologio?

Apple Watch offre fino a 18 ore di funzionamento con un'app companion attiva in condizioni di utilizzo standard. Wear OS — fino a 24 ore. WatchConnectivity è ottimizzato per un basso consumo energetico: il trasferimento dati viene sospeso quando la batteria è scarica e la sincronizzazione di massa viene eseguita durante la ricarica dell'orologio.

Riepilogo

  • Companion App — un'app per orologio che funziona in coppia con l'app principale sul telefono
  • WatchConnectivity — un framework iOS con quattro modalità di trasferimento dati per Apple Watch
  • Wearable Data Layer — un'API Android per sincronizzare con Wear OS tramite DataItem e MessageClient
  • Funzionamento autonomo — la cache dei dati consente di lavorare quando si è disconnessi dal telefono
  • Consumo energetico — fino a 18 ore su Apple Watch, fino a 24 ore su Wear OS
  • Interfaccia per orologio — interfaccia concisa con elementi grandi e testo minimo
  • Pubblicazione — watchOS è incluso nel binario iOS, Wear OS è pubblicato separatamente su Google Play

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche