Inizio
Copiare un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-watch`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/watch/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
-
Installare il pacchetto
Finestra del terminale bun add @capgo/capacitor-watch -
Sincronizza con i progetti nativi
Finestra del terminale bunx cap sync -
Configura il plugin
Esempio di utilizzo base:
import { CapgoWatch } from '@capgo/capacitor-watch';// Check watch connectivity statusconst info = await CapgoWatch.getInfo();console.log('Watch paired:', info.isPaired);console.log('Watch reachable:', info.isReachable);// Listen for messages from watchawait CapgoWatch.addListener('messageReceived', (event) => {console.log('Message from watch:', event.message);});Invia un messaggio al Watch:
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}Configurazione iOS richiesta:
- Aggiungi la capacità di WatchConnectivity al tuo app iOS in Xcode
- Crea un target watchOS nell'applicazione Xcode
- Implementa WatchConnectivity nell'app watchOS (vedi Implementazione dell'app Watch di seguito)
Il plugin attiva automaticamente la WCSession quando il plugin si carica.
L'Apple Watch è supportata solo su iOS. Su Android, tutti i metodi rifiuteranno con l'errore "Apple Watch è supportata solo su iOS". Il
getInfo()metodo restituisceisSupported: false. -
Gestisci messaggi che richiedono una risposta
// Listen for messages that need a responseawait CapgoWatch.addListener('messageReceivedWithReply', async (event) => {console.log('Request from watch:', event.message);// Process the requestconst result = await processWatchRequest(event.message);// Send reply back to watchawait CapgoWatch.replyToMessage({callbackId: event.callbackId,data: { result }});}); -
Sincronizza lo stato dell'applicazione
// Update application context (latest value only)await CapgoWatch.updateApplicationContext({context: {theme: 'dark',userId: '123',lastSync: Date.now()}});// Listen for context updates from watchawait CapgoWatch.addListener('applicationContextReceived', (event) => {console.log('Context from watch:', event.context);}); -
Trasferisci informazioni utente in modo affidabile
// Queue data for reliable delivery (even when watch is offline)await CapgoWatch.transferUserInfo({userInfo: {recordId: '456',action: 'created',data: { name: 'Item 1' }}});// Listen for user info transfersawait CapgoWatch.addListener('userInfoReceived', (event) => {console.log('User info from watch:', event.userInfo);}); -
Monitor la connessione
// Track reachability changesawait CapgoWatch.addListener('reachabilityChanged', (event) => {console.log('Watch reachable:', event.isReachable);if (event.isReachable) {// Watch is now available for interactive messaging}});// Track session activation stateawait CapgoWatch.addListener('activationStateChanged', (event) => {// 0 = notActivated, 1 = inactive, 2 = activatedconsole.log('Session state:', event.state);});
Impostazione dell'app Watch
Sottosezione intitolata “Impostazione dell'app Watch”La tua app watchOS deve implementare WatchConnectivity. Ecco un esempio di SwiftUI:
import SwiftUIimport WatchConnectivity
@mainstruct MyWatchApp: App { init() { WatchViewModel.shared.activate() }
var body: some Scene { WindowGroup { ContentView() } }}
class WatchViewModel: NSObject, ObservableObject, WCSessionDelegate { static let shared = WatchViewModel()
@Published var lastMessage: [String: Any] = [:]
func activate() { guard WCSession.isSupported() else { return } WCSession.default.delegate = self WCSession.default.activate() }
// Send message to iPhone func sendToPhone(_ data: [String: Any]) { guard WCSession.default.isReachable else { print("iPhone not reachable") return } WCSession.default.sendMessage(data, replyHandler: nil) }
// Send message with reply func sendToPhoneWithReply(_ data: [String: Any], completion: @escaping ([String: Any]) -> Void) { guard WCSession.default.isReachable else { return } WCSession.default.sendMessage(data, replyHandler: completion) }
// Receive message from iPhone func session(_ session: WCSession, didReceiveMessage message: [String: Any]) { DispatchQueue.main.async { self.lastMessage = message } }
// Receive application context func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) { DispatchQueue.main.async { self.lastMessage = applicationContext } }
// Required delegate methods func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { print("Watch session activated: \(activationState.rawValue)") }}API Reference
Sottosezione intitolata “API Reference”sendMessage(options: SendMessageOptions)
Sottosezione intitolata “sendMessage(options: SendMessageOptions)”Inviare un messaggio interattivo al watch. Richiede che il watch sia raggiungibile.
Parametri:
data: Oggetto - I dati da inviare all'orologio
updateApplicationContext(options: UpdateContextOptions)
Sezione intitolata “aggiorna contesto dell'applicazione (options: UpdateContextOptions)”Aggiorna il contesto dell'applicazione. Solo l'ultima versione viene conservata.
Parametri:
context: Oggetto - I dati del contesto da sincronizzare
transferUserInfo(options: TransferUserInfoOptions)
Sezione intitolata “trasferisci informazioni utente (options: TransferUserInfoOptions)”Inoltra le informazioni utente per una consegna affidabile.
Parametri:
userInfo: Oggetto - Le informazioni utente da trasferire
replyToMessage(options: ReplyMessageOptions)
Sezione intitolata “rispondi al messaggio (options: ReplyMessageOptions)”Rispondi a un messaggio che richiede una risposta.
Parametri:
callbackId: string - L'ID di callback dall'evento messageReceivedWithReplydata: Oggetto - I dati di risposta
getInfo()
Sezione intitolata “getInfo()”Ottenere lo stato di connettività dell'orologio.
Restituisce: WatchInfo oggetto con:
isSupported: boolean - Se WatchConnectivity è disponibileisPaired: boolean - Se è presente un orologioisWatchAppInstalled: boolean - Se è installato l'app dell'orologioisReachable: boolean - Se è raggiungibile l'orologioactivationState: numero - Stato della sessione (0/1/2)
getPluginVersion()
Sezione intitolata “getPluginVersion()”Ottieni la versione del plugin nativo.
| Evento | Descrizione |
|---|---|
messageReceived | Messaggio semplice da watch |
messageReceivedWithReply | Messaggio che aspetta una risposta (include id di callback) |
applicationContextReceived | Aggiornamento del contesto da watch |
userInfoReceived | Trasferimento di informazioni utente da watch |
reachabilityChanged | Cambiamento di connettività del watch |
activationStateChanged | Cambiamento di stato di attivazione della sessione |
Modelli di Comunicazione
Sezione intitolata “Modelli di Comunicazione”Messaggistica in Tempo Reale (sendMessage)
Sezione intitolata “Messaggistica in Tempo Reale (sendMessage)”- Richiede che l'orologio sia raggiungibile
- Migliore per la comunicazione interattiva e a tempo di risposta
- Fallisce immediatamente se l'orologio non è disponibile
Contexto dell'Applicazione (updateApplicationContext)
Sezione intitolata “Contexto dell'Applicazione (updateApplicationContext)”- Valore più recente solo - precedenti valori vengono sovrascritti
- Migliore per sincronizzare lo stato corrente dell'app
- Inviato quando l'orologio diventa disponibile
Informazioni dell'utente (transferUserInfo)
Sezione intitolata “Informazioni dell'utente (transferUserInfo)”- Inoltrate e consegnate in ordine
- Ottimo per dati importanti che devono essere consegnati
- Funziona anche quando l'orologio è temporaneamente inaccessibile
Note sulla piattaforma
Sezione intitolata “Note sulla piattaforma”- Richiede iOS 15.0 o successivo
- Utilizza il framework WatchConnectivity
- La sessione si attiva automaticamente al caricamento del plugin
- Supporta la consegna in background per contesto e informazioni utente
Android
Sezione intitolata “Android”- Non supportato (Apple Watch è iOS-only)
- Tutti i metodi rifiutano con un errore appropriato
getInfo()returnsisSupported: false
- Non supportato
- Tutti i metodi rifiutano con errore non disponibile
getInfo()returnsisSupported: false
Casi d'uso comuni
Sezione intitolata “Casi d'uso comuni”- Sincronizzazione dati: Mantieni sincronizzati i dati del telefono e dell'orologio
- Controllo remoto: Controlla le funzionalità del telefono dall'orologio
- Notifiche: Invia notifiche personalizzate all'orologio
- Dati di salute: Condividi metriche di fitness e salute
- Controllo media: Controlla la riproduzione della musica dall'orologio
- Smart Home: Controlla dispositivi dal tuo polso
Risoluzione dei problemi
Sottosezione intitolata “Risoluzione dei problemi”Ora non raggiungibile:
- Assicurati che l'orologio sia all'interno della portata Bluetooth
- Verifica che sia in esecuzione entrambi gli app
- Verifica che WCSession sia attivato su entrambi i lati
Non ricevi messaggi:
- Verifica che i listener siano registrati prima di inviare
- Verifica che l'app orologio implementi WCSessionDelegate
- Utilizza
transferUserInfoper una consegna garantita
La sessione non si attiva:
- Assicurati di aver aggiunto la capacità di WatchConnectivity in Xcode
- Verifica che l'app orologio abbia l'ID bundle del companion
- Verifica che entrambe le app siano compatibili con le versioni OS
Continua da Getting Started
Sezione intitolata “Continua da Getting Started”Se stai utilizzando Getting Started per pianificare il lavoro di plugin nativo, connettilo con Utilizzando @capgo/capacitor-watch per la capacità nativa in Utilizzando @capgo/capacitor-watch, Capgo Directory dei plugin per il flusso di lavoro del prodotto nella cartella di plugin Capgo i plugin Capacitor di Capgo per la dettaglio di implementazione in Capacitor Plugins by Capgo, Aggiungere o aggiornare i plugin per la dettaglio di implementazione in Aggiungere o aggiornare i plugin, e Alternative plugin aziendali di Ionic Enterprise per il flusso di lavoro del prodotto in Alternative plugin aziendali di Ionic Enterprise.