Iniziare
Copia un prompt di impostazione 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.
Installazione
Sottosezione intitolata “Installazione”Puoi utilizzare la nostra configurazione assistita da AI per installare il plugin. Aggiungi le Capgo abilità al tuo strumento AI utilizzando il seguente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsUsa poi il seguente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.Se preferisci la configurazione manuale, installa il plugin eseguendo i seguenti comandi e segui le istruzioni specifiche del tuo platform qui sotto:
-
Installa 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 alla 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à WatchConnectivity al tuo'app iOS in Xcode
- Crea un'app target watchOS nel tuo progetto Xcode
- Implementa WatchConnectivity nell'app watchOS (vedi Implementazione dell'app Watch di seguito)
Il plugin attiva automaticamente la WCSession quando il plugin carica.
L'Apple Watch è supportata solo su iOS. Su Android, tutti i metodi rifiuteranno con l'errore “L'Apple Watch è supportata solo su iOS”. Il
getInfo()Il 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);}); -
Monitora la connettività
// 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);});
Implementazione dell'app per l'orologio
Sezione intitolata “Implementazione dell'app per l'orologio”La sua 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 all'orologio. Richiede che l'orologio sia raggiungibile.
Parametri:
data: Oggetto - I dati da inviare all'orologio
updateApplicationContext(options: UpdateContextOptions)
Sottosezione intitolata “updateApplicationContext(options: UpdateContextOptions)”Aggiorna il contesto dell'applicazione. Solo l'ultima versione viene conservata.
Parametri:
context: Oggetto - I dati di contesto da sincronizzare
transferUserInfo(options: TransferUserInfoOptions)
Sezione intitolata “transferUserInfo(options: TransferUserInfoOptions)”Inoltra i dati dell'utente per una consegna affidabile.
Parametri:
userInfo: Oggetto - Le informazioni dell'utente da trasferire
replyToMessage(options: ReplyMessageOptions)
Sezione intitolata “replyToMessage(options: ReplyMessageOptions)”Rispondi a un messaggio che ha richiesto una risposta.
Parametri:
callbackId: stringa - L'ID di callback dal messaggio ricevuto con evento messageReceivedWithReplydata: Oggetto - I dati di risposta
getInfo()
Sezione intitolata “getInfo()”Ottenere lo stato di connettività dell'orologio.
Ritorna: WatchInfo oggetto con:
isSupported: boolean - Se WatchConnectivity è disponibileisPaired: boolean - Se è presente un orologioisWatchAppInstalled: boolean - Se è installato l'applicazione dell'orologioisReachable: boolean - Se l'orologio è raggiungibileactivationState: numero - Stato della sessione (0/1/2)
getPluginVersion()
Sezione intitolata “getPluginVersion()”Ottenere la versione del plugin nativo.
| Evento | Descrizione |
|---|---|
messageReceived | Messaggio semplice dal watch |
messageReceivedWithReply | Messaggio che aspetta una risposta (include id di callback) |
applicationContextReceived | Aggiornamento del contesto dal watch |
userInfoReceived | Trasferimento di informazioni dell'utente dal watch |
reachabilityChanged | Cambiamento della connettività del watch |
activationStateChanged | Lo stato di attivazione della sessione è cambiato |
Modelli di comunicazione
Sezione intitolata “Modelli di comunicazione”Messaggistica istantanea (sendMessage)
Sezione intitolata “Messaggistica istantanea (sendMessage)”- Richiede che il watch sia raggiungibile
- Migliore per la comunicazione interattiva e sensibile al tempo
- Fallisce immediatamente se il watch non è disponibile
Contesto dell'applicazione (updateApplicationContext)
Sottosezione intitolata “Contesto dell'applicazione (aggiorna contesto dell'applicazione)”- Valore più recente solo - i valori precedenti vengono sovrascritti
- Migliore per sincronizzare lo stato dell'app attuale
- Invia quando il watch diventa disponibile
Trasferimento di informazioni dell'utente (transferUserInfo)
Sottosezione intitolata “Trasferimento di informazioni dell'utente (trasferisci informazioni dell'utente)”- In coda e inviati in ordine
- Migliore per i dati importanti che devono essere inviati
- Funziona anche quando l'orologio è temporaneamente inaccessibile
Nota della piattaforma
Sezione intitolata “Nota della 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 (l'orologio Apple è disponibile solo su iOS)
- Tutti i metodi rifiutano con un errore appropriato
getInfo()ritornaisSupported: false
- Non supportato
- Tutti i metodi rifiutano con errore non disponibile
getInfo()ritornaisSupported: false
Casi d'uso comuni
Sezione intitolata “Casi d'uso comuni”- Sincronizzazione dei datiSincronizza i dati del telefono e del computer
- Controllo remoto: Controlla le funzionalità del telefono dal 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
- Casa Intelligente: Controlla i dispositivi dal polso
Risoluzione dei Problemi
: Sezione intitolata “Risoluzione dei Problemi”Orologio non raggiungibile:
- Assicurarsi che il watch sia all'interno della portata Bluetooth
- Verificare che entrambe le app siano in esecuzione
- Verificare che WCSession sia attivato su entrambi i lati
Non ricevuti messaggi:
- Verificare che i listener siano registrati prima di inviare
- Verificare che l'app del watch implementi WCSessionDelegate
- Usare
transferUserInfoper la consegna garantita
Sessione non attivata:
- Assicurarsi che la capacità WatchConnectivity sia aggiunta in Xcode
- Verificare che l'app del watch abbia l'ID bundle del companion
- Verificare che entrambe le app siano compatibili con le versioni OS
Continua da Inizia a utilizzare
Sottosezione intitolata “Continua da Inizia a utilizzare”Se stai utilizzando Inizia a utilizzare per pianificare il lavoro di plugin nativi, connettilo con Utilizzando @capgo/capacitor-watch per la capacità nativa in Utilizzando @capgo/capacitor-watch, Directory dei plugin Capgo per il flusso di lavoro del prodotto in Directory dei plugin Capgo, I plugin Capacitor sviluppati da Capgo per la dettaglio di implementazione in I plugin Capacitor sviluppati da Capgo, Aggiungere o aggiornare i plugin per i dettagli di implementazione in Aggiungere o Aggiornare Plugin, e Alternative per Plugin Enterprise Ionic per il flusso di lavoro del prodotto in Alternative Plugin Enterprise Ionic.