Getting Started
Copiar una solicitud 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”Puede utilizar nuestra configuración asistida por IA para instalar el plugin. Agregue las Capgo habilidades a su herramienta de IA utilizando el siguiente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsLuego utilice la siguiente solicitud:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.Si prefiere la configuración manual, instale el complemento ejecutando los siguientes comandos y siguiendo las instrucciones específicas de la plataforma a continuación:
-
Instalar el paquete
Ventana de terminal bun add @capgo/capacitor-watch -
Sincronizar con proyectos nativos
Ventana de terminal bunx cap sync -
Configurar el complemento
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 de iOS en Xcode
- Crear un objetivo de aplicación de watchOS en tu proyecto de Xcode
- Implementar WatchConnectivity en tu aplicación de watchOS (ver Implementación de la aplicación de reloj a continuación)
El plugin activa automáticamente la sesión WC cuando se carga el plugin.
Configuración de Wear OS requerida:
- Agregar un módulo de Wear OS a tu proyecto de Android (igual que
applicationIdy firmado como la aplicación del teléfono). - Declara la
capgo_watchcapacidad en el módulo de reloj (ver Crear una aplicación de reloj OS). - Implementa escuchadores de capa de datos en el reloj utilizando las rutas del plugin (
/capgo/message,/capgo/context, and others).
El plugin de teléfono registra escuchadores de reloj Wearable API cuando se carga. Utiliza
getInfo()para verificar los nodos conectados y si se detecta la aplicación del reloj.Pasos completos: Crear una aplicación de reloj OS.
-
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 watch (include requestId for Wear OS correlation)await CapgoWatch.replyToMessage({callbackId: event.callbackId,data: {requestId: event.message.requestId,result,},});}); -
Sincronizar 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);}); -
Transferir 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);}); -
Monitorear 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 Referencia
Sección titulada “API Referencia”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 al reloj
updateApplicationContext(options: UpdateContextOptions)
Sección titulada “updateApplicationContext(options: UpdateContextOptions)”Actualizar el contexto de la aplicación. Solo el último valor se mantiene.
Parámetros:
context: Objeto - Los datos de contexto para sincronizar
transferUserInfo(options: TransferUserInfoOptions)
Sección titulada “transferUserInfo(options: TransferUserInfoOptions)”Informar datos del usuario para una entrega confiable.
Parámetros:
userInfo: Object - La información del usuario para transferir
replyToMessage(options: ReplyMessageOptions)
Sección titulada “replyToMessage(options: ReplyMessageOptions)”Responder a un mensaje que solicitó una respuesta.
Parámetros:
callbackId: string - El ID de callback desde el evento messageReceivedWithReplydata: Object - Los datos de respuesta
getInfo()
Sección titulada “getInfo()”Obtener el estado de conectividad de la reloj.
Devuelve: WatchInfo un objeto con:
isSupported: boolean - ¿Están disponibles las APIs de reloj en esta plataformaisPaired: boolean - Reloj Apple conectado (iOS) o al menos un nodo Wear OS conectado (Android)isWatchAppInstalled: boolean - Aplicación de reloj de acompañamiento instalada (iOS) ocapgo_watch: boolean - Capacidad detectada (Android)isReachable: boolean - ¿Está el reloj disponible para mensajería inmediata?activationStateNúmero - Estado de sesión (WCSession de iOS; 2 cuando un nodo está conectado, 0 en caso contrario)
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 (solo iOS) |
activationStateChanged | Estado de activación de la sesión cambiado (solo iOS) |
Patrones de comunicación
Sección titulada “Patrones de comunicación”Mensajería inmediata (sendMessage)sendMessage)
Sección titulada “Mensajería inmediata (sendMessage)”- Requiere que el reloj esté disponible
- Mejor para la comunicación interactiva y sensible al tiempo
- Falla inmediatamente si no está disponible el reloj
Contexto de la aplicación (updateApplicationContext)
Contexto de la aplicación (actualizarContextoDeAplicación)- Último valor solo - los valores anteriores se sobrescriben
- Best for syncing current app state
- Se entrega cuando el reloj se vuelva disponible
Transferencia de información del usuario (transferUserInfo)
Transferencia de información del usuario (transferUserInfo)- Pendiente y se entrega 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”Consulte la tabla de soporte de la plataforma en la página de visión general del plugin para una matriz método por método.
iOS (Apple Watch)
Sección titulada “iOS (Apple Watch)”- Requiere iOS 15.0 o posterior
- Utiliza el marco de trabajo WatchConnectivity
- La sesión se activa automáticamente al cargar el complemento
- Soporta la entrega de fondo para contexto y información del usuario
- Emite
reachabilityChangedyactivationStateChanged
Android (Wear OS)
Sección titulada “Android (Wear OS)”- Requiere servicios de Google Play con capa de datos de Wear OS (
play-services-wearable, incluido con el complemento) - Los APKs de teléfono y reloj deben compartir el mismo
applicationIdy clave de firma - La aplicación de reloj debe anunciar la capacidad
capgo_watch - ¿ no emite
reachabilityChangedoactivationStateChanged; encuestagetInfo()when needed - Guía de configuración: Crear una aplicación de Wear OS
- El mensaje de la reloj no se admite en el navegador
getInfo()se resuelve conisSupported: falsey otros campos en valores predeterminados segurosgetPluginVersion()se resuelve con{ version: "web" }sendMessage,updateApplicationContext,transferUserInfo, yreplyToMessagerechaza con un error no disponibleaddListenerresuelve un manejador a través de CapacitorWebPluginPero los eventos de watch no están soportados en el navegador (las llamadas de llamada nunca se ejecutan)
Casos de uso comunes
Título de la sección “Uso Común”- Data SyncSincronice datos de reloj y teléfono
- Control remotoControla características del teléfono desde el reloj
- Notificaciones: Envíe notificaciones personalizadas al reloj
- Datos de salud: Compartir métricas de fitness y salud
- Control de medios: Controlar reproducción de música desde el reloj
- Hogar inteligente: Controlar dispositivos desde el antebrazo
Solución de problemas
: Sección titulada “Solución de problemas”El reloj no está accesible:
- Ensure watch is within Bluetooth range
- Verifique que ambos aplicativos estén en ejecución
- Verifique que WCSession esté activado en ambos lados
Los mensajes no se reciben:
- Verificar que los oyentes estén registrados antes de enviar
- Verificar que la aplicación de reloj implemente WCSessionDelegate
- Usar
transferUserInfopara entrega garantizada
No se activa la sesión:
- Asegúrese de que la capacidad de WatchConnectivity esté agregada en Xcode
- Verificar que la aplicación de reloj tenga el ID de paquete de compañero
- Verify both apps target compatible OS versions
Siga adelante desde Inicio
Sección titulada “Siga adelante desde Inicio”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, Directorio de Plugins Capgo para el flujo de trabajo del producto en Directorio de Plugins Capgo, Plugins de Capacitor por Capgo para el detalle de implementación en Plugins de Capacitor por 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 Ionic Enterprise Plugin Alternatives.