Getting Started
Copiez un prompt de configuration avec les étapes d'installation et le 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.
Installation
Sous-titre « 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-pluginsEnsuite, 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 :
-
Installez le package
Fenêtre de terminal bun add @capgo/capacitor-watch -
Synchronisez avec les projets natifs
Fenêtre de terminal bunx cap sync -
Configurer l'extension
Exemple d'utilisation de base :
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 à l'horloge :
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}Configuration requise d'iOS :
- 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.
L'Apple Watch n'est pris en charge que sur iOS. Sur Android, toutes les méthodes rejettent avec l'erreur « L'Apple Watch n'est pris en charge que sur iOS ».
getInfo()la méthode retourneisSupported: false. -
Gérez 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 watchawait CapgoWatch.replyToMessage({callbackId: event.callbackId,data: { result }});}); -
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 watchawait CapgoWatch.addListener('applicationContextReceived', (event) => {console.log('Context from watch:', event.context);}); -
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 transfersawait CapgoWatch.addListener('userInfoReceived', (event) => {console.log('User info from watch:', event.userInfo);}); -
Surveillez 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 de montre
Section intitulée « Implémentation de l'application de montre »Votre application watchOS doit implémenter 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 Reference
Section intitulée « API Reference »sendMessage(options: SendMessageOptions)
Envoyer un message interactif à la montre. Exige que la montre soit accessible.Paramètres :
Section intitulée « Paramètres : »
data: Objet - Les données à envoyer à l'horloge
updateApplicationContext(options: UpdateContextOptions)
Section intitulée “mettre à jour le contexte d'application (options : Options de mise à jour du contexte d'application)”Mettre à jour le contexte d'application. Seule la dernière valeur est conservée.
Paramètres :
context: Objet - Les données de contexte à synchroniser
transferUserInfo(options: TransferUserInfoOptions)
Section intitulée “transférer les informations de l'utilisateur (options : Options de transfert des informations de l'utilisateur)”File d'attente les informations de l'utilisateur pour une livraison fiable.
Paramètres :
userInfo: Objet - Les informations de l'utilisateur à transférer
replyToMessage(options: ReplyMessageOptions)
Section intitulée “répondre au message (options : Options de réponse au message)”Répondre à un message qui a demandé une réponse.
Paramètres :
callbackId: ID de rappel de l'événement messageReceivedWithReplydata: Données de la réponse
getInfo()
Section intitulée “getInfo()”Obtenir l'état de la connectivité de l'horloge.
Retourne : WatchInfo un objet avec :
isSupported: boolean - Si WatchConnectivity est disponibleisPaired: boolean - Si une horloge est pairéeisWatchAppInstalled: boolean - Si l'application horloge est installéeisReachable: boolean - Si l'horloge est accessibleactivationState: number - État de la session (0/1/2)
getPluginVersion()
Section intitulée “getPluginVersion()”Obtenez la version native du plugin.
Événements
Section intitulée “Événements”| Événement | Description |
|---|---|
messageReceived | Message simple provenant de l'horloge |
messageReceivedWithReply | Message attendu en réponse (inclut callbackId) |
applicationContextReceived | Mise à jour du contexte provenant de l'horloge |
userInfoReceived | Transfert d'informations sur l'utilisateur provenant de l'horloge |
reachabilityChanged | Modification de la connectivité de l'horloge |
activationStateChanged | État d'activation de la session modifié |
Modèles de communication
Modèle de communicationCommunication 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
Notes de plateforme
Section intitulée « Notes de plateforme »- 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()returnsisSupported: false
- Pas pris en charge
- Toutes les méthodes rejettent avec une erreur non disponible
getInfo()returnsisSupported: false
Cas d'utilisation courants
Section intitulée « Cas d'utilisation courants »- Synchronisation de donnéesSynchronisez les données de l'horloge et du téléphone
- Contrôle à distanceContrôlez les fonctionnalités du téléphone depuis l'horloge
- NotificationsEnvoyez des notifications personnalisées à l'horloge
- Données de santéPartagez les métriques de fitness et de santé
- Contrôle multimédiaContrôlez la lecture de musique depuis l'horloge
- Smart HomeContrôlez les appareils depuis votre poignet
Résolution des problèmes
Section intitulée « Résolution des problèmes »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
transferUserInfopour 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
Continuez de l'étape de démarrage
Section intitulée “Continuez de l'étape de démarrage”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.