Getting Started
Copiez une invite de configuration avec les étapes d'installation et la guide markdown complète 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
Section intitulée « Installation »Vous pouvez utiliser notre configuration assistée par l'IA pour installer le plugin. Ajoutez les Capgo compétences à votre outil IA à l'aide de 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 à 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 requise pour 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 }});}); -
Synchronisation de 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 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 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
Section intitulée « Implémentation de l'application Watch »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)") }}Référence API
Section intitulée « Référence API »sendMessage(options: SendMessageOptions)
Section intitulée « sendMessage(options : OptionsSendMessage) »Envoyer un message interactif à l'horloge. L'horloge doit être accessible.
Paramètres :
data: Objet - Les données à envoyer à l'horloge
updateApplicationContext(options: UpdateContextOptions)
Section intitulée « updateApplicationContext(options : OptionsMiseAJourContexte) »Met à jour le contexte de l'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 « transferUserInfo(options : OptionsTransfertInfoUtilisateur) »File 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 : ReplyMessageOptions) »Répondre à un message qui a demandé une réponse.
Paramètres :
callbackId: chaîne - L'ID de rappel provenant de l'événement messageReceivedWithReplydata: objet - Les données de réponse
Obtenir l'état de connectivité de l'horloge.
Retourne : WatchInfo un objet avec :
isSupported: booléen - Si WatchConnectivity est disponibleisPaired: boolean - Le watch est-il pairéisWatchAppInstalled: boolean - L'application du watch est-elle installéeisReachable: boolean - Le watch est-il accessibleactivationState: number - État de la session (0/1/2)
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 watch |
messageReceivedWithReply | Message attendu en réponse (inclut callbackId) |
applicationContextReceived | Actualisation du contexte de mise à jour depuis l'horloge |
userInfoReceived | Transfert d'informations de l'utilisateur depuis l'horloge |
reachabilityChanged | État de connectivité de l'horloge modifié |
activationStateChanged | État d'activation de session modifié |
Modèles de communication
Section intitulée « Modèles de communication »Envoi de messages instantané («)sendMessage)
Section intitulée « Envoi de messages instantané (sendMessage) »- Exige que l'horloge soit accessible
- Idéal pour la communication interactive et sensible à l'heure
- Échoue immédiatement si l'horloge n'est pas disponible
Contexte d'application («updateApplicationContext)
Contexte d'application (mettre à jour l'applicationContext)- Seule la dernière valeur est prise en compte - les valeurs précédentes sont effacées
- Idéal pour synchroniser l'état actuel de l'application
- Envoyé lorsque le montre devient disponible
Transfert d'informations utilisateur (transferUserInfo)
Section intitulée « Transfert d'informations 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 le montre est temporairement inatteignable
Remarques de plateforme
Section intitulée « Remarques de plateforme »- Exige iOS 15.0 ou ultérieur
- Utilise le framework WatchConnectivity
- La session s'active automatiquement lors du chargement du plugin
- Supporte la livraison en arrière-plan pour le contexte et les informations utilisateur
Android
Section intitulée “Android”- Non pris en charge (l'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 indisponible
getInfo()renvoieisSupported: false
Utilisations courantes
Section intitulée « Utilisations courantes »- Synchronisation de données : Gardez les données de montre et de téléphone synchronisées
- Contrôl’à distance : Contrôlez les fonctionnalités de téléphone à partir de la montre
- Notifications : Envoyez des notifications personnalisées à la montre
- Données de santé: Partagez les métriques de forme et de santé
- Media Control: Contrôlez la lecture de musique depuis votre montre
- Smart Home: Contrôlez les appareils depuis votre poignet
Résolution de problèmes
: Section intitulée « Résolution de problèmes »Votre montre n'est pas accessible :
- Vérifiez que la montre est dans la zone de couverture Bluetooth
- 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
Les messages ne sont pas reçus :
- Vérifiez que les écouteurs sont enregistrés avant d'envoyer
- Vérifiez que l'application Watch 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 Watch a l'ID de bundle de l'application de compagnon
- Vérifiez que les deux applications ciblent des versions OS compatibles
Continuez de la section « Continuez de Getting Started »
Titre de la section « Continuez de Getting Started »Si vous utilisez Getting Started 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 de plugins d'entreprise Ionic pour le flux de travail du produit dans Alternatives de plugins d'entreprise Ionic.