Saltar al contenido

Inicio

  1. __CAPGO_KEEP_0__

    Ventana de terminal
    bun add @capgo/capacitor-watch
  2. Sincronizar con proyectos nativos

    Ventana de terminal
    bunx cap sync
  3. Configurar el complemento

    Ejemplo de uso básico:

    import { CapgoWatch } from '@capgo/capacitor-watch';
    // Check watch connectivity status
    const info = await CapgoWatch.getInfo();
    console.log('Watch paired:', info.isPaired);
    console.log('Watch reachable:', info.isReachable);
    // Listen for messages from watch
    await CapgoWatch.addListener('messageReceived', (event) => {
    console.log('Message from watch:', event.message);
    });

    Enviar un mensaje a Watch:

    // Check if watch is reachable first
    const info = await CapgoWatch.getInfo();
    if (info.isReachable) {
    await CapgoWatch.sendMessage({
    data: { action: 'refresh', timestamp: Date.now() }
    });
    }

    Configuración de iOS requerida:

    1. Agregue la capacidad de WatchConnectivity a su aplicación de iOS en Xcode
    2. Cree un objetivo de aplicación de watchOS en su proyecto de Xcode
    3. Implemente WatchConnectivity en su aplicación de watchOS (consulte la implementación de la aplicación de reloj a continuación)

    El complemento activa automáticamente la sesión WC cuando se carga el complemento.

  4. Maneje mensajes que requieren una respuesta

    // Listen for messages that need a response
    await CapgoWatch.addListener('messageReceivedWithReply', async (event) => {
    console.log('Request from watch:', event.message);
    // Process the request
    const result = await processWatchRequest(event.message);
    // Send reply back to watch
    await CapgoWatch.replyToMessage({
    callbackId: event.callbackId,
    data: { result }
    });
    });
  5. Sincronice 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 watch
    await CapgoWatch.addListener('applicationContextReceived', (event) => {
    console.log('Context from watch:', event.context);
    });
  6. Transferir información de usuario de manera confiable

    // 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 transfers
    await CapgoWatch.addListener('userInfoReceived', (event) => {
    console.log('User info from watch:', event.userInfo);
    });
  7. Monitorear conectividad

    // Track reachability changes
    await CapgoWatch.addListener('reachabilityChanged', (event) => {
    console.log('Watch reachable:', event.isReachable);
    if (event.isReachable) {
    // Watch is now available for interactive messaging
    }
    });
    // Track session activation state
    await CapgoWatch.addListener('activationStateChanged', (event) => {
    // 0 = notActivated, 1 = inactive, 2 = activated
    console.log('Session state:', event.state);
    });

Su aplicación de reloj necesita implementar WatchConnectivity. Aquí hay un ejemplo de SwiftUI:

import SwiftUI
import WatchConnectivity
@main
struct 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)")
}
}

Envíe un mensaje interactivo al reloj. Requiere que el reloj esté disponible.

Parámetros:

  • data: Object - Los datos a enviar al reloj

Actualizar contexto de aplicación. Solo se mantiene el valor más reciente.

Parámetros:

  • context: Object - Los datos de contexto para sincronizar

Cola la información de usuario para su entrega confiable.

Parámetros:

  • userInfo: Object - La información de usuario a transferir

Responder a un mensaje que solicitó una respuesta.

Parámetros:

  • callbackId: string - El ID de llamada desde el evento messageReceivedWithReply
  • data: Object - Los datos de la respuesta

Obtener el estado de conectividad de la reloj.

Devuelve: WatchInfo un objeto con:

  • isSupported: boolean - Si WatchConnectivity está disponible
  • isPaired: boolean - Si se ha pairado un reloj
  • isWatchAppInstalled: boolean - Si se ha instalado la aplicación de reloj
  • isReachable: boolean - Si el reloj está accesible
  • activationState: número - Estado de la sesión (0/1/2)

Obtenga la versión nativa del plugin.

EventoDescripción
messageReceivedMensaje simple desde el reloj
messageReceivedWithReplyMensaje que espera una respuesta (incluye callbackId)
applicationContextReceivedActualización de contexto desde el reloj
userInfoReceivedTransferencia de información del usuario desde el reloj
reachabilityChangedCambio de conectividad del reloj
activationStateChanged__CAPGO_KEEP_0__
  • Requiere que el reloj esté disponible
  • Mejor para la comunicación interactiva y sensible al tiempo
  • Fallará 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 envía cuando el reloj se vuelve disponible

Transferencia de información del usuario (transferUserInfo)

Sección titulada “Transferencia de información del usuario (transferUserInfo)”
  • Programado y enviado en orden
  • Ideal para datos importantes que deben ser enviados
  • Funciona incluso cuando el reloj está temporalmente inalcanzable
  • Requiere iOS 15.0 o posterior
  • Utiliza el marco de trabajo de WatchConnectivity
  • La sesión se activa automáticamente al cargar el plugin
  • Soporta entrega de fondo para contexto e información de usuario
  • No soportado (Apple Watch es solo iOS)
  • Todos los métodos rechazan con el error apropiado
  • getInfo() returns isSupported: false
  • No soportado
  • Todos los métodos rechazan con error de disponibilidad no disponible
  • getInfo() returns isSupported: false
  1. Sincronización de Datos: Mantén sincronizados los datos del teléfono y del reloj
  2. Control Remoto: Controla las características del teléfono desde el reloj
  3. Notificaciones: Envía notificaciones personalizadas al reloj
  4. Datos de Salud: Comparte métricas de fitness y salud
  5. Control de Medios: Controla la reproducción de música desde el reloj
  6. Hogar Inteligente: Controla dispositivos desde tu muñeca

La reloj no está accesible:

  • Asegúrate de que el reloj esté dentro del rango de Bluetooth
  • Verifica que ambas aplicaciones estén en ejecución
  • Verifica que WCSession esté activado en ambos lados

Los mensajes no se reciben:

  • Verifica que los oyentes estén registrados antes de enviar
  • Verifica que la aplicación de reloj implemente WCSessionDelegate
  • Utiliza transferUserInfo para entrega garantizada

Sesión no activada:

  • Asegúrese de que la capacidad de WatchConnectivity esté agregada en Xcode
  • Verifique que la aplicación de reloj tenga el ID de paquete de compañero
  • Verifique que ambas aplicaciones estén dirigidas a versiones de OS compatibles