Getting Started
Ein Setup-Prompt mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
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.
-
Installieren Sie das Paket
Terminalfenster bun add @capgo/capacitor-watch -
Synchronisieren Sie mit native Projekten
Terminalfenster bunx cap sync -
Konfigurieren Sie das Plugin
Grundlegender Beispielsatz: Basic Usage Example
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);});Senden Sie eine Nachricht an Watch:
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}Erforderliche iOS-Einrichtung:
- Fügen Sie der iOS-Anwendung in Xcode die WatchConnectivity-Fähigkeit hinzu
- Erstellen Sie ein watchOS-Anwendungsziel in Ihrem Xcode-Projekt
- Implementieren Sie WatchConnectivity in Ihrer watchOS-Anwendung (siehe Implementierung des Watch-Apps unten)
Der Plugin aktiviert die WCSession automatisch, wenn das Plugin geladen wird.
Apple Watch wird nur auf iOS unterstützt. Auf Android werden alle Methoden mit der Fehlermeldung „Apple Watch wird nur auf iOS unterstützt“ abgelehnt.
getInfo()Die Methode gibt zurückisSupported: false. -
Nachrichten, auf die eine Antwort erforderlich ist
// 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 }});}); -
Synchronisiere Anwendungsstatus
// 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);});
Überwachung der App-Implementierung
Überwachung der App-ImplementierungIhre Uhranwendungen müssen 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 den Uhren. Erfordert, dass die Uhr erreichbar ist.
Parameter:
data: Objekt - Die Daten, die an die Uhr gesendet werden.
updateApplicationContext(options: UpdateContextOptions)
Abschnitt mit dem Titel „updateApplicationContext(options: UpdateContextOptions)“Die Anwendungskontext aktualisieren. Nur der letzte Wert wird gespeichert.
Parameter:
context: Objekt - Die Kontextdaten, die synchronisiert werden.
transferUserInfo(options: TransferUserInfoOptions)
Abschnitt mit dem Titel “transferUserInfo(options: TransferUserInfoOptions)”Benutzerinformationen für zuverlässige Lieferung in Warteschlange setzen.
Parameter:
userInfo: Objekt - Die zu übertragenden Benutzerinformationen
replyToMessage(options: ReplyMessageOptions)
Abschnitt mit dem Titel “replyToMessage(options: ReplyMessageOptions)”Antwort auf eine Nachricht, die eine Antwort erforderte.
Parameter:
callbackId: string - Die Callback-ID aus dem Ereignis messageReceivedWithReplydata: Objekt - Die Antwortdaten
getInfo()
Abschnitt mit dem Titel “getInfo()”Verbindungszustand des Smartwatches abrufen.
Rückgabewert: WatchInfo Objekt mit:
isSupported: boolean - Ob WatchConnectivity verfügbar istisPaired: boolean - Ob ein Armband gepaart istisWatchAppInstalled: boolean - Ob eine Armband-App installiert istisReachable: boolean - Ob das Armband erreichbar istactivationState: number - Sitzungsstatus (0/1/2)
getPluginVersion()
Abschnitt mit ‘getPluginVersion()’Ermitteln Sie die native Pluginversion.
Ereignisse
Abschnitt mit ‘Ereignisse’| Ereignis | Beschreibung |
|---|---|
messageReceived | Einfache Nachricht von der Uhr |
messageReceivedWithReply | Nachricht, die eine Antwort erwartet (enthält callbackId) |
applicationContextReceived | Uhr-Context-Update |
userInfoReceived | Übertragung von Benutzerinformationen von der Uhr |
reachabilityChanged | Uhr-Verbindung geändert |
activationStateChanged | Status der Sitzungsaktivierung geändert |
Kommunikationsmuster
Abschnitt mit dem Titel „Kommunikationsmuster“Echtzeit-Nachrichten (sendMessage)sendMessage)
Abschnitt mit dem Titel „Echtzeit-Nachrichten (sendMessage)“- Braucht Uhr zu erreichen
- Am besten für interaktive, zeitkritische Kommunikation
- Falls sofort aus, wenn Watch nicht verfügbar ist
Anwendungs Kontext (updateApplicationContext)
Sektion mit dem Titel “Anwendungs Kontext (updateApplicationContext)”- Erstes neuestes Wert - vorherige Werte werden überschrieben
- Am besten geeignet für das Synchronisieren des aktuellen App-Zustands
- Übertragen, wenn Watch verfügbar wird
Benutzerinfo-Übertragung (transferUserInfo)
Sektion mit dem Titel “Benutzerinfo-Übertragung (transferUserInfo)”- Angefordert und in der Reihenfolge übertragen
- Am besten geeignet für wichtige Daten, die übertragen werden müssen
- Arbeitet auch, wenn der Watch vorübergehend nicht erreichbar ist
Plattformhinweise
Abschnitt mit dem Titel “Plattformhinweise”- Benötigt iOS 15.0 oder höher
- Macht Verwendung des WatchConnectivity-Frameworks
- Sitzung aktiviert sich automatisch bei Plugin-Laden
- Unterstützt Hintergrundlieferung für Kontext und Benutzerinformationen
- Nicht unterstützt (Apple Watch ist iOS-only)
- Alle Methoden lehnen mit entsprechender Fehlermeldung ab
getInfo()__CAPGO_KEEP_0__isSupported: false
- Not supported
- Alle Methoden lehnen mit einer Fehlermeldung ab, die anzeigt, dass die Funktion nicht verfügbar ist
getInfo()returnsisSupported: false
Gemeinsame Verwendungsfälle
Abschnitt mit dem Titel „Gemeinsame Verwendungsfälle“- Daten-Synchronisierung: Synchronisiere Uhr und Telefon-Daten
- Fernsteuerung: Steuere Telefon-Funktionen von der Uhr aus
- Benachrichtigungen: Benachrichtigungen an den Uhr anpassen
- Gesundheitsdaten: Fitness- und Gesundheitsdaten teilen
- Mediensteuerung: Musikwiedergabe von der Uhr steuern
- Smart Home: Geräte von der Uhr steuern
Problembehandlung
Abschnitt mit dem Titel „Problembehandlung“Uhr nicht erreichbar:
- Überprüfen Sie, ob die Uhr in Bluetooth-Range ist
- Stellen Sie sicher, dass 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 Uhranzeige die WCSessionDelegate implementiert
- Verwenden Sie
transferUserInfofür eine sichere Zustellung
Sitzung nicht aktiviert:
- Stellen Sie sicher, dass die WatchConnectivity-Fähigkeit in Xcode hinzugefügt ist
- Überprüfen Sie, ob die Uhranzeige die Begleit-Bundle-ID hat
- Überprüfen Sie, ob beide Apps auf kompatible Betriebssystemversionen zielen
Weitermachen von Getting Started
Abschnitt mit dem Titel “Weitermachen von Getting Started”If Sie native Plugins verwenden, Starten Sie mit um native Plugin-Arbeit zu planen, verbinden Sie es mit Mit @capgo/capacitor-watch für die native Fähigkeit in Mit @capgo/capacitor-watch, Capgo Plugin-Ordner für den Produktworkflow in Capgo Plugin-Ordner, Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo, Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Plugins hinzufügen oder aktualisieren, und Ionic Enterprise-Plugin-Alternativen für das Produktworkflow in Ionic Enterprise Plugin Alternativen.