Getting Started
Eine Einrichtungsvorlage mit den Installationsanweisungen und der vollständigen Markdown-Anleitung für diesen Plugin erstellen.
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.
Sie können unsere AI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie die Capgo Fähigkeiten Ihrem AI-Tool mit der folgenden Befehl hinzu:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsVerwenden Sie dann die folgende Anweisung:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.Wenn Sie die manuelle Einrichtung bevorzugen, installieren Sie das Plugin, indem Sie die folgenden Befehle ausführen und die unten angegebenen Plattform-spezifischen Anweisungen befolgen:
-
Installieren Sie das Paket
Terminal-Fenster bun add @capgo/capacitor-watch -
Synchronisieren Sie mit native Projekten
Terminal-Fenster bunx cap sync -
Konfigurieren Sie das Plugin
Beispiel für grundlegende Verwendung:
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);});Nachricht an Watch senden:
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}Benötigte iOS-Einrichtung:
- Die WatchConnectivity-Fähigkeit in Ihrem iOS-App in Xcode hinzufügen
- Einen watchOS-App-Ziel in Ihrem Xcode-Projekt erstellen
- WatchConnectivity in Ihrer watchOS-App implementieren (siehe Watch-App-Implementierung unten)
Der Plugin aktiviert die WCSession automatisch, wenn das Plugin geladen wird.
Benötigte Wear OS-Einrichtung:
- Ein Wear OS-Modul zu Ihrem Android-Projekt (gleich
applicationIdund Signierung wie die Telefon-App). - Erklären Sie die
capgo_watchFähigkeit im Wear-Modul (siehe Erstellung einer Wear-OS-Anwendung). - Implementieren Sie Datenlayer-Händer auf dem Uhren-Plugin mit den Plugin-Pfaden (
/capgo/message,/capgo/contextund andere).
Das Telefon-Plugin registriert Wearable API-Händer, wenn es geladen wird. Verwenden Sie
getInfo()um verbundene Knoten zu prühen und zu prühen, ob die Uhren-App erkannt wird.Full steps: Erstellung einer Wear-OS-Anwendung.
-
Nachrichten bearbeiten, die eine Antwort erfordern
// 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,},});}); -
Anwendungszustand synchronisieren
// 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);}); -
Benutzerinformationen zuverlässig übertragen
// 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);}); -
Verbindung überwachen
// 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);});
Watch App-Implementierung
Implementierung der Watch-AppIhre watchOS-Anwendung muss WatchConnectivity implementieren. Hier ist ein Beispiel für 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 Referenz
Abschnitt mit dem Titel “API Referenz”sendMessage(options: SendMessageOptions)
Abschnitt mit dem Titel “sendMessage(options: SendMessageOptions)”Ein interaktives Nachricht senden an das Uhren-Gerät. Erfordert, dass das Uhren-Gerät erreichbar ist.
Parameter:
data: Objekt - Die Daten, die an den Watch gesendet werden
updateApplicationContext(options: UpdateContextOptions)
Abschnitt mit dem Titel “updateApplicationContext(options: UpdateContextOptions)”Die Anwendungskontext aktualisieren. Nur der neueste Wert wird gespeichert.
Parameter:
context: Objekt - Die Synchronisationsdaten im Kontext
transferUserInfo(options: TransferUserInfoOptions)
Abschnitt mit dem Titel “transferUserInfo(options: TransferUserInfoOptions)”Queue user info for reliable delivery.
Parameter:
userInfo: Objekt - Die zu übertragenden Benutzerinformationen
replyToMessage(options: ReplyMessageOptions)
Abschnitt mit dem Titel “replyToMessage(options: ReplyMessageOptions)”Antworte auf eine Nachricht, die eine Antwort erfordert.
Parameter:
callbackId: string - Die Callback-ID aus dem Ereignis messageReceivedWithReplydata: Objekt - Die Antwortdaten
getInfo()
Abschnitt mit dem Titel “getInfo()”Verbindungsstatus der Uhr abrufen.
Rückgabewerte: WatchInfo Objekt mit:
isSupported: boolean - Ob Watch-APIs auf dieser Plattform verfügbar sindisPaired: boolean - Apple Watch paired (iOS) oder zumindest ein Wear OS-Node verbunden (Android)isWatchAppInstalled: boolean - Begleitende Uhr-App installiert (iOS) odercapgo_watch: boolean - Fähigkeit erkannt (Android)isReachable: boolean - Ob die Uhr für sofortige Nachrichten erreichbar istactivationState: number - Sitzungsstatus (iOS WCSession; Android 2, wenn ein Node verbunden ist, 0 sonst)
getPluginVersion()
Abschnitt mit dem Titel “getPluginVersion()”Ermitteln Sie die native Pluginversion.
Ereignisse
Abschnitt mit dem Titel “Ereignisse”| Ereignis | Beschreibung |
|---|---|
messageReceived | Einfache Nachricht von Watch |
messageReceivedWithReply | Nachricht, die eine Antwort erwartet (enthält callbackId) |
applicationContextReceived | Aktualisierung des Kontexts von Watch |
userInfoReceived | Übertragung von Benutzerinformationen von Watch |
reachabilityChanged | Watch-Verbindung geändert (nur iOS) |
activationStateChanged | Aktivierungsstatus der Sitzung geändert (nur iOS) |
Kommunikationsmuster
Abschnitt mit dem Titel „Kommunikationsmuster“Echtzeitkommunikation (sendMessage)sendMessage)
Abschnitt mit dem Titel „Echtzeitkommunikation (sendMessage)“- Benötigt, dass der Watch erreichbar ist
- Ideal für interaktive, zeitkritische Kommunikation
- Fällt sofort durch, wenn der Watch nicht verfügbar ist
Anwendungskontext (updateApplicationContext)
Abschnitt mit dem Titel „Anwendungskontext (updateApplicationContext)“- Nur der aktuellste Wert - vorherige Werte werden überschrieben
- Best for syncing current app state
- Wird geliefert, wenn der Watch verfügbar wird
Benutzerinformationen übertragen (transferUserInfo)
Abschnitt mit dem Titel „Benutzerinformationen übertragen (transferUserInfo)“- In der Reihenfolge eingereiht und geliefert
- Ideal für wichtige Daten, die geliefert werden müssen
- Funktioniert auch, wenn der Watch vorübergehend nicht erreichbar ist
Plattformhinweise
Abschnitt mit dem Titel „Plattformhinweise”Siehe das plattformübergreifende Unterstützungsübersicht auf der Pluginübersicht für eine Methode-für-Methode-Matrix
iOS (Apple Watch)
Abschnitt mit dem Titel „iOS (Apple Watch)”- Benötigt iOS 15.0 oder später
- Verwendet WatchConnectivity-Framework
- Sitzung aktiviert sich automatisch bei Plugin-Laden
- Unterstützt Hintergrundlieferung für Kontext und Benutzerinformationen
- Emittiert
reachabilityChangedundactivationStateChanged
Android (Wear OS)
Abschnitt mit dem Titel „Android (Wear OS)“- Benötigt Google Play-Dienste mit Wear OS-Datenschicht (
play-services-wearableinklusive im Plugin) - Phone- und Wear-APKs müssen den selben
applicationIdund Signaturschlüssel - Die Uhranwendung muss die Fähigkeit anbieten
capgo_watch - Kann nicht emit
reachabilityChangedoderactivationStateChanged; AbstimmunggetInfo()wenn benötigt - Setup-Anleitung: Erstellung einer Wear OS-Anwendung
- Die Watch-Messaging-Funktion wird im Browser nicht unterstützt
getInfo()resolves withisSupported: falseund andere Felder bei sicheren StandardwertengetPluginVersion()resolves with{ version: "web" }sendMessage,updateApplicationContext,transferUserInfo, undreplyToMessagewird mit einem Fehler aufgrund von Nichtverfügbarkeit abgelehntaddListenerlöst eine Verbindung über Capacitor aufWebPlugin, aber Watch-Ereignisse sind im Browser nicht unterstützt (Callbacks werden nie ausgeführt)
Gängige Anwendungsfälle
Abschnitt mit dem Titel „Gängige Anwendungsfälle“- Data SyncSynchronisiere Daten von Uhr und Telefon
- Fernsteuerung: Steuern Sie Telefon-Funktionen vom Watch aus
- Benachrichtigungen: Benachrichtigungen an den Watch senden
- Gesundheitsdaten: Fitness- und Gesundheitsdaten teilen
- Mediensteuerung: Musikwiedergabe von der Uhr steuern
- Smart Home: Geräte von der Uhr steuern
Fehlersuche
Abschnitt mit dem Titel "Fehlersuche"Uhr nicht erreichbar:
- Stellen Sie sicher, dass die Uhr im Bluetooth-Bereich ist
- Überprüfen Sie, ob beide Apps läuft
- Überprüfen Sie, ob WCSession auf beiden Seiten aktiviert ist
Nicht empfangene Nachrichten:
- Überprüfen Sie, ob Hörer vor dem Senden registriert sind
- Überprüfen Sie, ob die Watch-App die WCSessionDelegate implementiert
- Use
transferUserInfofür eine garantierte Zustellung
Sitzung nicht aktiviert:
- Ensure WatchConnectivity capability is added in Xcode
- Überprüfen Sie, ob die Watch-App die Begleit-Bundle-ID hat
- Verify both apps target compatible OS versions
Fortsetzen Sie mit Getting Started
Abschnitt mit dem Titel „Fortsetzen Sie mit Getting Started“Wenn Sie Capgo verwenden Anfängskonfiguration um native Plugin-Arbeit zu planen, verbinden Sie es mit Mit @capgo/capacitor-watch zur Verwendung der native Fähigkeit in Mit @capgo/capacitor-watch, Capgo-Plugin-Verzeichnis für den Produktworkflow in Capgo Plugin-Verzeichnis, Capacitor-Plugins von Capgo zur Implementierungsdetail in Capacitor-Plugins von Capgo, Hinzufügen oder Aktualisieren von Plugins zur Implementierungsdetail in Hinzufügen oder Aktualisieren von Plugins, und Ionische Unternehmens-Plugin-Alternativen für das Produktworkflow in Ionic Enterprise Plugin Alternativen.