Saltar al contenido

Inicio rápido

GitHub
  1. Instale el paquete

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

    Ventana de terminal
    bunx cap sync
  3. Configurar el plugin

    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. Agregar la capacidad de WatchConnectivity a tu aplicación de iOS en Xcode
    2. Crear una aplicación de destino de watchOS en tu proyecto de Xcode
    3. 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.

  4. Maneja 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. 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 watch
    await CapgoWatch.addListener('applicationContextReceived', (event) => {
    console.log('Context from watch:', event.context);
    });
  6. Transfiere 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. Monitorea la 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);
    });

Observa la implementación de la aplicación de reloj

Sección titulada “Implementación de la aplicación de reloj”

Su aplicación de reloj de watchOS 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)")
}
}

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 se mantiene el valor más reciente.

Parámetros:

  • context: Objeto - Los datos de contexto para sincronizar

transferUserInfo(options: TransferUserInfoOptions)

Sección titulada “transferUserInfo(options: TransferUserInfoOptions)”

Coloque la información del usuario para su entrega confiable.

Parámetros:

  • userInfo: Object - La información del usuario para transferir

Responder a un mensaje que solicitó una respuesta.

Parámetros:

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

Obtener el estado de conectividad de la aplicación.

Devuelve: WatchInfo objeto con:

  • isSupported: boolean - ¿Está disponible la conectividad de reloj?
  • isPaired: boolean - ¿Está pairado el reloj?
  • isWatchAppInstalled: boolean - ¿Está instalado el reloj?
  • isReachable: boolean - ¿Está disponible el reloj?
  • activationState: number - Estado de la sesión (0/1/2)

Obtener 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
reachabilityChangedSe ha cambiado la conectividad del reloj
activationStateChangedSe ha cambiado el estado de activación de la sesió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 la función de seguimiento
  • Sólo el último valor - los valores anteriores se sobrescriben
  • Mejor para sincronizar el estado actual de la aplicación
  • Se entrega cuando se vuelva a conectar la función de seguimiento
  • Programado y se entrega en orden
  • Mejor para datos importantes que deben ser entregados
  • Funciona incluso cuando la función de seguimiento esté temporalmente inalcanzable

Nota de la plataforma

Notas de la plataforma
  • Requiere iOS 15.0 o posterior
  • Utiliza el marco de trabajo WatchConnectivity
  • La sesión se activa automáticamente al cargar el plugin
  • Soporta entrega de fondo para contexto y información del usuario
  • No soportado (Apple Watch es solo iOS)
  • Todas las funciones rechazan con el error apropiado
  • getInfo() devuelve isSupported: false
  • No soportado
  • Todos los métodos rechazan con error de no disponible
  • getInfo() devuelve isSupported: false
  1. Sincronización de datos: Mantener sincronizados los datos del reloj y el teléfono
  2. : Controlar las características del teléfono desde el relojNotificaciones
  3. Notificaciones: Envíe notificaciones personalizadas a la muñeca
  4. Datos de Salud: Comparta métricas de fitness y salud
  5. Control de Medios: Controla la reproducción de música desde la muñeca
  6. Casa Inteligente: Controla dispositivos desde el antebrazo

No se puede alcanzar la muñeca:

  • Verifique que la muñeca esté dentro del rango de Bluetooth
  • Asegúrese de que ambas aplicaciones estén en ejecución
  • Verifique que WCSession está activado en ambos lados

No se recibieron mensajes:

  • Verifique que los oyentes estén registrados antes de enviar
  • Verifique que la aplicación de reloj implementa WCSessionDelegate
  • Usar transferUserInfo para garantizar la entrega

No se está activando la sesión:

  • 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 targeten versiones de OS compatibles

Si estás utilizando Iniciación para planificar el trabajo de plugin nativo, conecta con Usando @capgo/capacitor-watch para la capacidad nativa en Usando @capgo/capacitor-watch, Directorio de Plugins de Capgo para el flujo de trabajo del producto en Directorio de Plugins de 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 Empresa de Ionic Enterprise para el flujo de trabajo del producto en Alternativas de Ionic Enterprise Plugin.