Inizio
Copia 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.
Installazione
Sezione intitolata “Installazione”Puoi utilizzare la nostra configurazione assistita dall'IA per installare il plugin. Aggiungi le Capgo competenze al tuo strumento di AI utilizzando il seguente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsPoi utilizza 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 l'installazione manuale, installa il plugin eseguendo i seguenti comandi e segui le istruzioni specifiche per la piattaforma riportate di seguito:
-
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 a 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 obbligatoria:
- 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)
La plugin attiva automaticamente la WCSession quando si carica il plugin.
L'Apple Watch è supportata solo su iOS. Su Android, tutti i metodi rifiuteranno con l'errore “L'Apple Watch è supportata solo su iOS”.
getInfo()Il metodo restituisceisSupported: false. -
Tratta i 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 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);});
Implementazione dell'app Watch
Sezione intitolata “Implementazione 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)") }}Riferimento a API
Sezione intitolata “Riferimento a API”sendMessage(options: SendMessageOptions)
Sezione intitolata “sendMessage(options: SendMessageOptions)”Inviare un messaggio interattivo al watch. Richiede che il watch sia raggiungibile.
Parametri:
data: Oggetto - I dati da inviare al watch
updateApplicationContext(options: UpdateContextOptions)
Sezione intitolata “updateApplicationContext(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 “transferUserInfo(options: TransferUserInfoOptions)”Inoltra le informazioni dell'utente per una consegna affidabile.
Parametri:
userInfo: Oggetto - Le informazioni dell'utente da trasferire
replyToMessage(options: ReplyMessageOptions)
Sezione intitolata “rispondi a messaggio (options: ReplyMessageOptions)”Rispondi a un messaggio che richiedeva 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à del watch.
Restituisce: WatchInfo oggetto con:
isSupported: booleano - Se WatchConnectivity è disponibileisPaired: boolean - Se il watch è pairatoisWatchAppInstalled: boolean - Se l'app del watch è installataisReachable: boolean - Se il watch è raggiungibileactivationState: number - Stato della sessione (0/1/2)
getPluginVersion()
Sezione intitolata “getPluginVersion()”Ottieni la versione del plugin nativo.
| Evento | Descrizione |
|---|---|
messageReceived | Messaggio semplice dal watch |
messageReceivedWithReply | Messaggio che aspetta una risposta (incluso callbackId) |
applicationContextReceived | Aggiornamento del contesto da watch |
userInfoReceived | Trasferimento delle informazioni dell'utente da watch |
reachabilityChanged | Modificato lo stato di connessione del watch |
activationStateChanged | Modificato lo stato di attivazione della sessione |
Pattini di comunicazione
Sottosezione intitolata “Pattini di comunicazione”Invio di messaggi in tempo reale (sendMessage)
Sottosezione intitolata “Invio di messaggi in tempo reale (sendMessage)”- Richiede che il watch sia raggiungibile
- Consigliato per la comunicazione interattiva e a tempo di reazione
- Fallisce immediatamente se il watch non è disponibile
Contesto dell'applicazione (updateApplicationContext)
Sezione intitolata “Contexto dell'applicazione (aggiornaContextoApplicazione)”- Valore più recente solo - i valori precedenti vengono sovrascritti
- Migliore per sincronizzare lo stato dell'applicazione corrente
- Invia quando il watch diventa disponibile
Trasferimento informazioni utente (transferUserInfo)
Sezione intitolata “Trasferimento informazioni utente (trasferisciInformazioniUtente)”- In coda e inviati in ordine
- Migliore per i dati importanti che devono essere inviati
- Funziona anche quando il watch è 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 è disponibile solo per iOS)
- Tutti i metodi rifiutano con un errore appropriato
getInfo()ritornaisSupported: false
- Not supportato
- Tutti i metodi rifiutano con errore non disponibile
getInfo()ritornaisSupported: false
Uso comune
Sottosezione intitolata “Uso comune”- Sincronizzazione dati: Mantieni sincronizzati i dati del watch e del telefono
- Controllo remoto: Controlla le funzionalità del telefono dal watch
- Notifiche: Invia notifiche personalizzate al watch
- Dati di salute: Condividi metriche di fitness e salute
- Media Control: Controlla la riproduzione musicale dal watch
- Smart Home: Controlla dispositivi dal polso
Risoluzione dei problemi
: Sezione intitolata “Risoluzione dei problemi”Non è possibile raggiungere il watch:
- Assicurati che il watch sia all'interno della portata Bluetooth
- Verifica che sia in esecuzione entrambi gli app
- Verifica che WCSession sia attivato su entrambi i lati
Non sono stati ricevuti i messaggi:
- Controlla che i listener siano registrati prima di inviare
- Verifica che l'app Watch implementi WCSessionDelegate
- Usa
transferUserInfoper una consegna garantita
Sessione non attiva:
- Assicurati che la capacità WatchConnectivity sia aggiunta in Xcode
- Controlla che l'app Watch abbia l'ID bundle del companion
- Verifica che entrambe le app siano compatibili con le versioni OS
Continua da Iniziare
Sottosezione intitolata “Continua da Iniziare”Se stai utilizzando Iniziare per pianificare il lavoro di plugin nativo, connettilo con Utilizzare @capgo/capacitor-watch per la capacità nativa in Utilizzare @capgo/capacitor-watch, Capgo Directory dei Plugin per il flusso di lavoro del prodotto in Capgo Directory dei Plugin, Capacitor Plugin da Capgo per il dettaglio di implementazione in Capacitor Plugin da Capgo, Aggiungere o Aggiornare Plugin per il dettaglio di implementazione in Aggiungere o Aggiornare Plugin, e Sostituti di Plugin Enterprise Ionic per il flusso di lavoro del prodotto in Sostituti di Plugin Enterprise Ionic.