Sauter au contenu

Getting Started

GitHub

Vous pouvez utiliser notre configuration assistée par l'IA pour installer le plugin. Ajoutez les Capgo compétences à votre outil IA en utilisant la commande suivante :

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

Ensuite, utilisez la prompt suivante :

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.

Si vous préférez la configuration manuelle, installez le plugin en exécutant les commandes suivantes et suivez les instructions spécifiques au plateforme ci-dessous :

  1. Installez le package

    Fenêtre de terminal
    bun add @capgo/capacitor-watch
  2. Synchronisez avec les projets natifs

    Fenêtre de terminal
    bunx cap sync
  3. Configurer l'extension

    Exemple d'utilisation de base :

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

    Envoyer un message à l'horloge :

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

    Configuration requise d'iOS :

    1. Ajoutez la capacité WatchConnectivity à votre application iOS dans Xcode
    2. Créez une cible d'application watchOS dans votre projet Xcode
    3. Implémentez WatchConnectivity dans votre application watchOS (voir l'implémentation de l'application Watch ci-dessous)

    Le plugin active automatiquement la session WC lorsque le plugin charge.

  4. Gérez les messages qui nécessitent une réponse

    // 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. Synchronisez l'état de l'application

    // 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. Transférez les informations de l'utilisateur de manière 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 transfers
    await CapgoWatch.addListener('userInfoReceived', (event) => {
    console.log('User info from watch:', event.userInfo);
    });
  7. Surveillez la connectivité

    // 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);
    });

Votre application watchOS doit implémenter WatchConnectivity. Voici un exemple 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)")
}
}

Paramètres :

Section intitulée « Paramètres : »

  • data: Objet - Les données à envoyer à l'horloge

Mettre à jour le contexte d'application. Seule la dernière valeur est conservée.

Paramètres :

  • context: Objet - Les données de contexte à synchroniser

File d'attente les informations de l'utilisateur pour une livraison fiable.

Paramètres :

  • userInfo: Objet - Les informations de l'utilisateur à transférer

Répondre à un message qui a demandé une réponse.

Paramètres :

  • callbackId: ID de rappel de l'événement messageReceivedWithReply
  • data: Données de la réponse

Obtenir l'état de la connectivité de l'horloge.

Retourne : WatchInfo un objet avec :

  • isSupported: boolean - Si WatchConnectivity est disponible
  • isPaired: boolean - Si une horloge est pairée
  • isWatchAppInstalled: boolean - Si l'application horloge est installée
  • isReachable: boolean - Si l'horloge est accessible
  • activationState: number - État de la session (0/1/2)

Obtenez la version native du plugin.

ÉvénementDescription
messageReceivedMessage simple provenant de l'horloge
messageReceivedWithReplyMessage attendu en réponse (inclut callbackId)
applicationContextReceivedMise à jour du contexte provenant de l'horloge
userInfoReceivedTransfert d'informations sur l'utilisateur provenant de l'horloge
reachabilityChangedModification de la connectivité de l'horloge
activationStateChangedÉtat d'activation de la session modifié

Modèles de communication

Modèle de communication

Communication instantanée (sendMessage)

Modèle de communication instantanée (sendMessage)
  • La montre doit être accessible
  • Meilleur pour la communication interactive et sensible à l'heure
  • Échoue immédiatement si la montre n'est pas disponible

Contexte d'application (updateApplicationContext)

Modèle de contexte d'application (updateApplicationContext)
  • Seul la valeur la plus récente est prise en compte - les valeurs précédentes sont effacées
  • Meilleur pour synchroniser l'état actuel de l'application
  • Envoyé lorsque la montre devient disponible

Transfert d'informations sur l'utilisateur (transferUserInfo)

Section intitulée « Transfert d'informations utilisateur (transferUserInfo) »
  • Exécuté et livré dans l'ordre
  • Idéal pour les données importantes qui doivent être livrées
  • Marche même lorsque l'horloge est temporairement inatteignable
  • Exige iOS 15.0 ou ultérieur
  • Utilise le framework WatchConnectivity
  • La session s'active automatiquement à la charge du plugin
  • Supporte la livraison en arrière-plan pour le contexte et les informations utilisateur
  • Pas pris en charge (Apple Watch est uniquement iOS)
  • Toutes les méthodes rejettent avec un erreur appropriée
  • getInfo() returns isSupported: false
  • Pas pris en charge
  • Toutes les méthodes rejettent avec une erreur non disponible
  • getInfo() returns isSupported: false
  1. Synchronisation de donnéesSynchronisez les données de l'horloge et du téléphone
  2. Contrôle à distanceContrôlez les fonctionnalités du téléphone depuis l'horloge
  3. NotificationsEnvoyez des notifications personnalisées à l'horloge
  4. Données de santéPartagez les métriques de fitness et de santé
  5. Contrôle multimédiaContrôlez la lecture de musique depuis l'horloge
  6. Smart HomeContrôlez les appareils depuis votre poignet

L'horloge n'est pas accessible :

  • Vérifiez que l'horloge est dans la zone de portée Bluetooth
  • Vérifiez que les deux applications sont en cours d'exécution
  • Vérifiez que WCSession est activé des deux côtés

Les messages ne sont pas reçus :

  • Vérifiez que les écouteurs sont enregistrés avant d'envoyer
  • Vérifiez que l'application horloge implémente WCSessionDelegate
  • Utilisez transferUserInfo pour une livraison garantie

La session ne s'active pas :

  • Assurez-vous que la capacité WatchConnectivity est ajoutée dans Xcode
  • Vérifiez que l'application horlogère a l'ID de bundle de l'application de compagnon
  • Vérifiez que les deux applications ciblent des versions OS compatibles

Si vous utilisez Démarrage pour planifier le travail de plugin natif, connectez-le avec Utilisation de @capgo/capacitor-watch pour la capacité native dans Utilisation de @capgo/capacitor-watch, Capgo Répertoire des plugins pour le flux de travail du produit dans Capgo Répertoire des plugins, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, Ajouter ou Mettre à Jour des Plugins pour le détail d'implémentation dans Ajouter ou Mettre à Jour des Plugins, et Alternatives de Plugins Entreprise Ionic pour le flux de travail du produit dans Alternatives de Plugins Entreprise Ionic.