Aller directement au contenu

Commencer

GitHub

Vous pouvez utiliser notre configuration assistée par l'IA pour installer le plug-in. Ajoutez les Capgo compétences à votre outil d'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 plug-in 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. Synchroniser avec les projets natifs

    Fenêtre de terminal
    bunx cap sync
  3. Configurer le plugin

    Exemple de base d'utilisation :

    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 à Watch :

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

    Configuration iOS requise :

    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 d'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. Surveiller 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 mettre en œuvre 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)")
}
}

sendMessage(options: SendMessageOptions)

Section intitulée “Méthodes”

Envoyez un message interactif à l'horloge. Exige que l'horloge soit accessible.

Paramètres :

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

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

Paramètres :

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

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

Paramètres :

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

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

Paramètres :

  • callbackId: string - L'ID de rappel de l'événement messageReceivedWithReply
  • data: Objet - Les données de 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: numéro - État de session (0/1/2)

Obtenez la version native du plugin.

ÉvénementDescription
messageReceivedMessage simple de l'horloge
messageReceivedWithReplyMessage attendu en réponse (inclut callbackId)
applicationContextReceivedMise à jour du contexte de l'horloge
userInfoReceivedTransfert d'informations sur l'utilisateur de l'horloge
reachabilityChangedModification de la connectivité de l'horloge
activationStateChangedÉtat de session activée modifié
  • Exige que la montre soit accessible
  • Meilleur pour la communication interactive et sensible à l'heure
  • Échoue immédiatement si la montre n'est pas disponible

Contexte de l'application (updateApplicationContext)

Section intitulée « Contexte de l'application (updateApplicationContext) »
  • Seul le dernier valeur est pris en compte - les valeurs précédentes sont effacées
  • Meilleur pour synchroniser l'état actuel de l'application
  • Disponible lorsque l'horloge devient disponible

Transfert d'informations de l'utilisateur (transferUserInfo)

Section intitulée « Transfert d'informations de l'utilisateur (transferUserInfo) »
  • En file d'attente et envoyé dans l'ordre
  • Idéal pour les données importantes qui doivent être envoyées
  • Marche même lorsque l'horloge est temporairement inatteignable
  • Requis 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 les informations de contexte et les informations utilisateur
  • Non pris en charge (Apple Watch est uniquement iOS)
  • Toutes les méthodes rejettent avec une erreur appropriée
  • getInfo() returns isSupported: false
  • Non pris en charge
  • Toutes les méthodes rejettent avec une erreur indisponible
  • getInfo() returns isSupported: false
  1. Synchronisation de données: Gardez vos données de téléphone et montre synchronisées
  2. Contrôle à distance: Contrôlez les fonctionnalités de votre téléphone depuis votre montre
  3. Notifications: Envoyez des notifications personnalisées à votre montre
  4. Données de santé: Partagez vos métriques de fitness et de santé
  5. Contrôle de médias: Contrôlez la lecture de musique depuis votre montre
  6. Smart HomeContrôlez les appareils depuis votre poignet

L'horloge n'est pas accessible :

  • Assurez-vous 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 livraison garantie

La session ne s'active pas :

  • Assurez-vous que la capacité WatchConnectivity est ajoutée dans Xcode
  • Vérifiez que l'application montre l'ID de bundle de l'application de montre
  • Vérifiez que les deux applications visent des versions OS compatibles

Continuez de la section « Continuez de la section « Getting Started » »

Si vous utilisez « Getting Started »

pour planifier le travail de plugin natif, connectez-le avec Utilisation de @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-watch pour la capacité native dans Utilisation de @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-watch Using @capgo/capacitor-watch for the native capability in Using @capgo/capacitor-watch, Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Plugins Capgo par Capacitor pour le détail d'implémentation dans Plugins Capgo par Capacitor, Ajouter ou Mettre à Jour les Plugins pour le détail d'implémentation dans Ajouter ou Mettre à Jour les Plugins, et Alternatives de Plugins d'Entreprise Ionic pour le flux de travail du produit dans Alternatives de Plugins d'Entreprise Ionic.