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.
-
Installez le package
Fenêtre de terminal bun add @capgo/capacitor-watch -
Synchronisez les projets natifs
Fenêtre de terminal bunx cap sync -
Configurez 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 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 « Apple Watch n'est pris en charge que sur iOS ».
getInfo()La méthode retourneisSupported: false. -
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 watchawait CapgoWatch.replyToMessage({callbackId: event.callbackId,data: { 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 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);});
Observer l'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)") }}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)”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 « transférer les informations de l'utilisateur (options : TransferUserInfoOptions) »Enfile 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 de caractères - L'ID de rappel du messageReceivedWithReplydata: Objet - Les données de réponse
Obtenir l'état de la connectivité de l'horloge.
Retourne : WatchInfo objet avec :
isSupported: boolean - Whether WatchConnectivity est disponibleisPaired: boolean - Whether un montre est pairéisWatchAppInstalled: boolean - Whether l'application d'horloge est installéeisReachable: boolean - Whether l'horloge est accessibleactivationState: nombre - État de 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 de l'horloge |
messageReceivedWithReply | Message attendu en réponse (inclut callbackId) |
applicationContextReceived | Mise à jour du contexte de l'horloge |
userInfoReceived | Transfert d'informations de l'utilisateur de l'horloge |
reachabilityChanged | État de la connectivité de l'horloge modifié |
activationStateChanged | État d'activation de la session modifié |
Modèles de communication
Section intitulée “Modèles de communication”Messagerie immédiate (sendMessage)
Section intitulée “Messagerie immédiate (sendMessage)”- Exige que l'horloge soit accessible
- Meilleur pour la communication interactive et sensible à l'heure
- Echoue immédiatement si la surveillance n'est pas disponible
Contexte d'application (updateApplicationContext)
Section intitulée « Contexte d'application (mettre à jour le contexte d'application) »- Seulement la dernière valeur - les valeurs précédentes sont effacées
- Meilleur pour la synchronisation de l'état actuel de l'application
- Envoyé lorsque la montre devient disponible
Transfert d'informations de l'utilisateur (transferUserInfo)
Section intitulée « Transfert d'informations de l'utilisateur (transférer les informations de l'utilisateur) »- En file d'attente et envoyé dans l'ordre
- Meilleur pour les données importantes qui doivent être envoyées
- Marche même lorsque la montre est temporairement inatteignable
Notes de la plateforme
Section intitulée « Notes 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
- Non pris en charge (l'Apple Watch est uniquement disponible sous iOS)
- Toutes les méthodes rejettent avec un erreur appropriée
getInfo()retourneisSupported: false
- Non pris en charge
- Toutes les méthodes rejettent avec une erreur non disponible
getInfo()renvoieisSupported: false
Utilisations courantes
Section intitulée « Utilisations courantes »- Synchronisation de données: Gardez les données de l'horloge et du téléphone synchronisées
- Contrôle à distance: Contrôlez les fonctionnalités du téléphone à partir de l'horloge
- Notifications: Envoyer des notifications personnalisées à l'horloge
- Health Data: Partager les métriques de fitness et de santé
- Media Control: Contrôler la lecture de musique depuis l'horloge
- Smart Home: Contrôler les appareils depuis votre poignet
Troubleshooting
Section intitulée “Résolution des problèmes”L'horloge n'est pas accessible :
- Vérifiez que l'horloge est dans la zone de couverture Bluetooth
- Vérifiez que les deux applications sont en cours d'exécution
- Vérifiez que WCSession est activé 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 horlogère implémente WCSessionDelegate
- Utilisez
transferUserInfopour une livraison garantie
Session non activée :
- 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 la section « Continuez de Getting Started »
Section intitulée “Continuez de Getting Started”Si vous utilisez Demarrage pour planifier le travail de plugin natif, connectez-le avec Utiliser @capgo/capacitor-watch pour la capacité native dans Utiliser @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 Enterprise pour le flux de travail du produit dans les alternatives du plugin Enterprise Ionic.