Saltar al contenido

Inicio

GitHub

Puedes utilizar nuestra configuración asistida por IA para instalar el plugin. Agrega las Capgo habilidades a tu herramienta de IA utilizando el siguiente comando:

Ventana de terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Luego 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 de la plataforma a continuación:

  1. Instalar el paquete

    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 requerida de iOS:

    1. Agregue la capacidad de WatchConnectivity a su aplicación de iOS en Xcode
    2. Cree una aplicación de objetivo de reloj en su proyecto de Xcode
    3. Implemente WatchConnectivity en su aplicación de reloj (consulte la 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. 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. 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 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 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);
    });

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)")
}
}

Enviar un mensaje interactivo al reloj. Requiere que el reloj esté accesible.

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)”

Cola la información del usuario para un envío 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 retorno desde el evento messageReceivedWithReply
  • data: Object - Los datos de respuesta

Obtener el estado de conectividad de la reloj.

Devuelve: WatchInfo un objeto con:

  • isSupported: boolean - Si WatchConnectivity está disponible
  • isPaired: boolean - ¿Está pairado el reloj?
  • isWatchAppInstalled: boolean - ¿Está instalado la aplicación del reloj?
  • isReachable: boolean - ¿Está disponible el reloj?
  • activationState: number - 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
activationStateChangedEstado de activación de sesión cambiado

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
  • Fallará inmediatamente si el reloj no está disponible
  • Último valor solo - los valores anteriores se sobreescriben
  • Mejor para sincronizar el estado actual de la aplicación
  • Se entrega cuando el reloj se vuelva disponible
  • Programado y se entrega en orden
  • Mejor para datos importantes que deben ser entregados
  • Funciona incluso cuando el reloj esté temporalmente inalcanzable
  • Requiere iOS 15.0 o posterior
  • Utiliza el framework WatchConnectivity
  • La sesión se activa automáticamente al cargar el plugin
  • Soporta entrega de fondo para contexto y información del usuario
  • No está soportado (Apple Watch es solo iOS)
  • Todos los métodos rechazan con el error apropiado
  • getInfo() devuelve isSupported: false
  • Not soportado
  • Todas las funciones 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. Control remoto: Controlar las características del teléfono desde el reloj
  3. Notificaciones: Enviar notificaciones personalizadas al reloj
  4. Datos de salud: Compartir métricas de fitness y salud
  5. Control de medios: Controlar reproducción de música desde el reloj
  6. Casa inteligente: Controlar dispositivos desde el antebrazo

El reloj no está disponible:

  • 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

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 transferUserInfo para entrega garantizada

No se está activando la sesión:

  • Asegúrese de que se haya agregado la capacidad de WatchConnectivity en Xcode
  • Verificar que la aplicación de reloj tenga el ID de paquete de compañero
  • Verificar que ambas aplicaciones tengan versiones de sistema operativo compatibles

Si está utilizando Inicio para planificar el trabajo de plugin nativo, conectarlo con Usando @capgo/capacitor-watch para la capacidad nativa en Usando @capgo/capacitor-watch, Capgo Directorio de Plugins para el flujo de trabajo del producto en Capgo Directorio de Plugins, Capacitor Plugins por Capgo para el detalle de implementación en Capacitor Plugins 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 Alternativas de Plugins de Ionic Enterprise.