Inicio rápido
Copiar un prompt de configuración con los pasos de instalación y la guía de markdown completa para este 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.
Instalación
Sección titulada “Instalación”Puedes utilizar nuestra configuración asistida por inteligencia artificial para instalar el complemento. Agrega las Capgo habilidades a tu herramienta de inteligencia artificial utilizando el siguiente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsLuego utiliza el siguiente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.Si prefieres la configuración manual, instala el complemento ejecutando los siguientes comandos y sigue las instrucciones específicas del plataforma a continuación:
-
Instalar el paquete
Ventana de terminal bun add @capgo/capacitor-watch -
Sync con proyectos nativos
Ventana de terminal bunx cap sync -
Configurar el plugin
Ejemplo de uso básico:
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);});Enviar un mensaje a Watch:
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}Configuración de iOS requerida:
- Agregar la capacidad de WatchConnectivity a tu aplicación iOS en Xcode
- Crea una aplicación objetivo de reloj en tu proyecto de Xcode
- Implementa WatchConnectivity en tu aplicación de reloj (ver Implementación de aplicación de reloj a continuación)
El complemento activa automáticamente la sesión WC cuando se carga el complemento.
El reloj de Apple solo se admite en iOS. En Android, todos los métodos rechazarán con el error "Apple Watch is only supported on iOS".
getInfo()El método devuelveisSupported: false. -
Gestiona mensajes que requieren una respuesta
// 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 }});}); -
Sincroniza el estado de la aplicación
// 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);}); -
Transfiere información de usuario de manera fiable
// 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);}); -
Monitorea la conectividad
// 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);});
Implementación de la aplicación de reloj
Sección titulada “Implementación de la aplicación de reloj”Su aplicación de reloj necesita implementar WatchConnectivity. Aquí hay un ejemplo de 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
Sección titulada “API Reference”Métodos
Sección titulada “Métodos”sendMessage(options: SendMessageOptions)
Sección titulada “sendMessage(options: SendMessageOptions)”Enviar un mensaje interactivo al reloj. Requiere que el reloj esté disponible.
Parámetros:
data: Objeto - Los datos a enviar a la reloj
updateApplicationContext(options: UpdateContextOptions)
Sección titulada “actualizar contexto de la aplicación (options: UpdateContextOptions)”Actualizar contexto de la aplicación. Solo el valor más reciente se mantiene.
Parámetros:
context: Objeto - Los datos de contexto para sincronizar
transferUserInfo(options: TransferUserInfoOptions)
Sección titulada “transferir información de usuario (options: TransferUserInfoOptions)”Cola la información de usuario para una entrega confiable.
Parámetros:
userInfo: Objeto - La información de usuario para transferir
replyToMessage(options: ReplyMessageOptions)
Sección titulada “contestar mensaje (options: ReplyMessageOptions)”Contestar a un mensaje que solicitó una respuesta.
Parámetros:
callbackId: __CAPGO_KEEP_0__ - El ID de llamada de respuesta del evento messageReceivedWithReplydata: __CAPGO_KEEP_0__ - Los datos de la respuesta
getInfo()
Sección titulada “getInfo()”Obtener el estado de conectividad de la reloj.
Devuelve: WatchInfo objeto con:
isSupported: __CAPGO_KEEP_0__ - Si WatchConnectivity está disponibleisPaired: __CAPGO_KEEP_0__ - Si se ha pairado una relojisWatchAppInstalled: __CAPGO_KEEP_0__ - Si se ha instalado una aplicación de relojisReachable: __CAPGO_KEEP_0__ - Si la reloj está accesibleactivationState: __CAPGO_KEEP_0__ - Estado de la sesión (0/1/2)
getPluginVersion()
Sección titulada “getPluginVersion()”Obtenga la versión nativa del plugin.
Eventos
Sección titulada “Eventos”| Evento | Descripción |
|---|---|
messageReceived | Mensaje simple desde el reloj |
messageReceivedWithReply | Mensaje que espera una respuesta (incluye callbackId) |
applicationContextReceived | Actualización de contexto desde el reloj |
userInfoReceived | Transferencia de información del usuario desde el reloj |
reachabilityChanged | Cambio de conectividad del reloj |
activationStateChanged | Estado de activación de la sesión cambiado |
Patrones de comunicación
Patrones de ComunicaciónMensajería Inmediata (sendMessage)
Sección titulada “Mensajería Inmediata (sendMessage)”- Requerido que el reloj esté disponible
- Mejor para la comunicación interactiva y sensible al tiempo
- Falla inmediatamente si el reloj no está disponible
Contexto de la Aplicación (updateApplicationContext)
Sección titulada “Contexto de la Aplicación (updateApplicationContext)”- Último valor solo - los valores anteriores se sobrescriben
- Mejor para sincronizar el estado actual de la aplicación
- Se entrega cuando el reloj se vuelva disponible
Transferencia de Información del Usuario (transferUserInfo)
Sección titulada “Transferencia de información del usuario (transferUserInfo)”- Programado y entregado en orden
- Mejor para datos importantes que deben ser entregados
- Funciona incluso cuando el reloj esté temporalmente inalcanzable
Notas de la plataforma
Sección titulada “Notas de la plataforma”- Requiere iOS 15.0 o posterior
- Utiliza el marco de trabajo de WatchConnectivity
- La sesión se activa automáticamente al cargar el plugin
- Apoya la entrega de fondo para contexto y información del usuario
Android
Sección titulada “Android”- No soportado (Apple Watch es iOS-only)
- Todos los métodos rechazan con el error apropiado
getInfo()devuelveisSupported: false
- No soportado
- Todos los métodos rechazan con el error de disponibilidad
getInfo()devuelveisSupported: false
Uso común
Sección titulada “Uso común”- Sync de datos: Mantén sincronizado los datos de reloj y teléfono
- Control remoto: Controla las características del teléfono desde el reloj
- Notificaciones: Envía notificaciones personalizadas al reloj
- Datos de salud: Comparte métricas de fitness y salud
- Control de medios: Controla la reproducción de música desde el reloj
- Casa inteligente: Controla dispositivos desde el antebrazo
Resolución de problemas
Sección titulada “Resolución de problemas”No se puede alcanzar el reloj:
- Asegúrese de que el reloj esté dentro del rango de Bluetooth
- Verifique que ambas aplicaciones estén en ejecución
- Verifique que WCSession esté activado en ambos lados
No se reciben mensajes:
- Verifique que los oyentes estén registrados antes de enviar
- Verifique que la aplicación del reloj implemente WCSessionDelegate
- Utilice
transferUserInfopara garantizar la entrega
No se activa la sesión:
- Asegúrese de que la capacidad de WatchConnectivity esté agregada en Xcode
- Verifique que la aplicación de reloj tenga el identificador de paquete de compañero
- Verifique que ambas aplicaciones estén dirigidas a versiones de sistema operativo compatibles
Siga adelante desde Getting Started
Sección titulada “Siga adelante desde Getting Started”Si está utilizando Getting Started para planificar el trabajo de plugin nativo, conecte con Usando @capgo/capacitor-watch para la capacidad nativa en Usando @capgo/capacitor-watch, Capgo Directorio de Plugin para el flujo de trabajo del producto en Capgo Directorio de Plugin, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, Agregar o Actualizar Plugins para el detalle de implementación en Agregar o Actualizar Plugins, y Alternativas de Plugins de Ionic Enterprise para el flujo de trabajo del producto en Alternativas de Plugins de Ionic Enterprise.