Prise en main
Copiez un prompt de configuration avec les étapes d'installation et la guide markdown complet pour ce plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-watch`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/watch/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Prêt à coller
Section titled “Installation”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 :
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsUtilisez ensuite 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 à la plateforme ci-dessous :
-
Installer le package
Fenêtre de terminal bun add @capgo/capacitor-watch -
Synchroniser avec les projets natifs
Fenêtre de terminal bunx cap sync -
Configurer le plugin
Exemple de base d'utilisation :
import { CapgoWatch } from '@capgo/capacitor-watch';// Check watch connectivity statusconst info = await CapgoWatch.getInfo();console.log('Watch paired:', info.isPaired);console.log('Watch reachable:', info.isReachable);// Listen for messages from watchawait CapgoWatch.addListener('messageReceived', (event) => {console.log('Message from watch:', event.message);});Envoyer un message à Watch :
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}Configuration iOS requise :
- Ajoutez la capacité WatchConnectivity à votre application iOS dans Xcode
- Créez une cible d'application watchOS dans votre projet Xcode
- 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.
Configuration Wear OS requise :
- Ajoutez un Module Wear OS à votre projet Android (même
applicationIdet signature que l'application téléphone). - Déclarez la
capgo_watchcapacité dans le module Wear OS (voir Créer une application Wear OS). - Implémentez les écouteurs du niveau de données sur l'horloge à l'aide des chemins du plugin.
/capgo/message,/capgo/contextet autres).
Le plugin téléphone enregistre les écouteurs Wearable API lorsqu'il charge. Utilisez
getInfo()pour vérifier les nœuds connectés et si l'application de montre est détectée.Étapes complètes : Créer une application Wear OS.
-
Gérer les messages qui nécessitent une réponse
// Listen for messages that need a responseawait CapgoWatch.addListener('messageReceivedWithReply', async (event) => {console.log('Request from watch:', event.message);// Process the requestconst result = await processWatchRequest(event.message);// Send reply back to watch (include requestId for Wear OS correlation)await CapgoWatch.replyToMessage({callbackId: event.callbackId,data: {requestId: event.message.requestId,result,},});}); -
Synchroniser 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 watchawait CapgoWatch.addListener('applicationContextReceived', (event) => {console.log('Context from watch:', event.context);}); -
Transférer les informations 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 transfersawait CapgoWatch.addListener('userInfoReceived', (event) => {console.log('User info from watch:', event.userInfo);}); -
Surveiller la connectivité
// Track reachability changesawait CapgoWatch.addListener('reachabilityChanged', (event) => {console.log('Watch reachable:', event.isReachable);if (event.isReachable) {// Watch is now available for interactive messaging}});// Track session activation stateawait CapgoWatch.addListener('activationStateChanged', (event) => {// 0 = notActivated, 1 = inactive, 2 = activatedconsole.log('Session state:', event.state);});
Implémentation de l'application Watch
Implémentation de l'application WatchVotre application watchOS doit mettre en œuvre WatchConnectivity. Voici un exemple SwiftUI :
import SwiftUIimport WatchConnectivity
@mainstruct 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)") }}API Référence
Section intitulée “API Référence”Méthodes
Section intitulée “Méthodes”sendMessage(options: SendMessageOptions)
Section intitulée “sendMessage(options : SendMessageOptions)”Envoyer un message interactif à l'horloge. Exige que l'horloge soit accessible.
Paramètres :
data: Objet - Les données à envoyer à l'horloge
updateApplicationContext(options: UpdateContextOptions)
Section intitulée “updateApplicationContext(options : UpdateContextOptions)”Update application context. Only latest value is kept.
Paramètres :
context: Objet - Les données de contexte à synchroniser
transferUserInfo(options: TransferUserInfoOptions)
Transfert d'informations utilisateur (options : TransferUserInfoOptions)Queue user info for reliable delivery.
Paramètres :
userInfo: Object - The user info to transfer
replyToMessage(options: ReplyMessageOptions)
Section intitulée « répondre au message (options : ReplyMessageOptions) »Répondre à un message qui a demandé une réponse.
Paramètres :
callbackId: chaîne de caractères - L'ID de rappel du messageReceivedWithReply événementdata: Objet - Les données de réponse
getInfo()
Section intitulée « getInfo() »Obtenir l'état de connectivité de la montre.
Renvoies : WatchInfo objet avec :
isSupported: boolean - Les APIs de montre sont-elles disponibles sur cette plateformeisPaired: boolean - Montre Apple pairée (iOS) ou au moins un nœud Wear OS connecté (Android)isWatchAppInstalled: boolean - Application de montre de compagnie installée (iOS) oucapgo_watch: boolean - Capacité détectée (Android)isReachable: boolean - La montre est-elle accessible pour un échange instantané de messagesactivationState: nombre - État de session (iOS WCSession; Android 2 lorsqu'un nœud est connecté, 0 sinon)
getPluginVersion()
Section intitulée “getPluginVersion()”Récupérer la version native du plugin
Événements
Section intitulée “Événements”| Événement | Description |
|---|---|
messageReceived | Message simple du montre |
messageReceivedWithReply | Message attend une réponse (inclut callbackId) |
applicationContextReceived | Mise à jour du contexte du montre |
userInfoReceived | Transfert d'informations de l'utilisateur du montre |
reachabilityChanged | Watch connectivity changed (iOS only) |
activationStateChanged | État d'activation de la session a changé (iOS uniquement) |
Modèles de communication
Section intitulée « Modèles de communication »Messagerie immédiate (sendMessage)sendMessage)
Section intitulée « Messagerie immédiate (sendMessage) »- Requiert que le montre soit accessible
- Idéal pour la communication interactive et sensible à l'heure.
- Échoue immédiatement si le montre n'est pas disponible
Contexte de l'application (updateApplicationContext)
Contexte d'application (mettre à jour l'application)- Seule la dernière valeur - les valeurs précédentes sont effacées
- Best for syncing current app state
- Livré lorsque le montre devient disponible
Transfert d'informations de l'utilisateur (transferUserInfo)
Transfert d'informations utilisateur (transferUserInfo)- En file d'attente et livré dans l'ordre
- Meilleur pour les données importantes qui doivent être livrées
- Fonctionne même lorsque le montre est temporairement inatteignable
Remarques sur la plateforme
Section intitulée « Remarques sur la plateforme »Voir la tableau de support de la plateforme Consultez l'aperçu du plugin pour une matrice détaillée.
iOS (Apple Watch)
Section intitulée « iOS (Apple Watch) »- Exige iOS 15.0 ou ultérieur
- Utilise le framework WatchConnectivity
- La session s'active automatiquement lors du chargement du plugin.
- Supports background delivery for context and user info
- Émet
reachabilityChangedetactivationStateChanged
Android (Wear OS)
Section intitulée « Android (Wear OS) »- Exige les services Google Play avec le layer de données Wear OS (
play-services-wearableinclus avec le plugin) - Les APKs téléphone et montre doivent partager la même
applicationIdet clé de signature - Watch app must advertise capability
capgo_watch - Fait pas emit
reachabilityChangedouactivationStateChangedougetInfo()Setup guide : - Créer une application Wear OS Créer une application Wear OS
- et d'autres champs aux valeurs par défaut de sécurité
getInfo()se résout avecisSupported: falselorsqu'il est nécessairegetPluginVersion()se résout avec{ version: "web" }sendMessage,updateApplicationContext,transferUserInfo, etreplyToMessagerefuse avec une erreur indisponibleaddListenerrésout un handle via CapacitorWebPlugin, but watch events are unsupported in the browser (callbacks never run)
Utilisations courantes
Titre de la section « Utilisations courantes »- Syncrodonnées: Keep watch and phone data in sync
- Contrôl’à distance: Control phone features from watch
- NotificationsEnvoyer des notifications personnalisées à la montre
- Données de Santé: Partagez les métriques de fitness et de santé
- Contrôle de Média: Contrôlez la lecture musicale depuis votre montre
- Smart Home: Contrôlez les appareils depuis votre poignet
Troubleshooting
Section intitulée « Résolution de Problèmes »Votre montre n'est pas accessible :
- Ensure watch is within Bluetooth range
- Vérifiez que les deux applications sont en cours d'exécution
- Vérifiez que la session WC est activée des deux côtés
Messages non reçus :
- Vérifiez que les écouteurs sont enregistrés avant d'envoyer
- Vérifiez que l'application de montre implémente WCSessionDelegate
- Utilisez
transferUserInfopour une livraison garantie
Session ne s'active pas :
- Assurez-vous que la capacité WatchConnectivity est ajoutée dans Xcode
- Check that watch app has the companion bundle ID
- Verify both apps target compatible OS versions
Continuez de la section « Continuez de Getting Started »
Titre de la section « Continuez de Getting Started »Si vous utilisez Prise en main pour planifier le travail de plugin natif, connectez-l’à En utilisant @capgo/capacitor-watch pour la capacité native dans En utilisant @capgo/capacitor-watch, Répertoire de plugin Capgo pour le flux de travail du produit dans Répertoire de plugin Capgo, Plugins Capacitor par Capgo pour le détail d'implémentation dans Plugins Capacitor par Capgo, Ajouter ou Mettre à jour les plugins pour le détail d'implémentation dans Ajouter ou Mettre à jour les plugins, et Alternatives aux plugins Enterprise Ionic pour le flux de travail du produit dans les alternatives Ionic Enterprise Plugin.