Getting Started
Einrichtungshinweis mit den Installationsanweisungen und der vollständigen Markdown-Guideline 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.
Installation
Abschnitt mit dem Titel „Installation“Sie können unsere KI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie den Capgo-Fähigkeiten Ihrer KI-Tool mithilfe der folgenden Befehl hinzu:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsVerwenden Sie dann die folgende Anfrage:
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 folgen Sie den unten angegebenen Plattform-spezifischen Anweisungen:
-
Installieren Sie das Paket
Terminalfenster bun add @capgo/capacitor-watch -
Synchronisieren mit native Projekten
Terminalfenster bunx cap sync -
Die Erweiterung konfigurieren
Grundlegender Beispielsatz:
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() }});}Required iOS Setup:
- Die WatchConnectivity-Fähigkeit in Ihrem iOS-App in Xcode hinzufügen
- Eine watchOS-App-Ziel in Ihrem Xcode-Projekt erstellen
- WatchConnectivity in Ihrer watchOS-App implementieren (siehe Watch App Implementation 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. Der
getInfo()Methode gibt zurückisSupported: false. -
Antworten auf Nachrichten, 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 watchawait CapgoWatch.replyToMessage({callbackId: event.callbackId,data: { result }});}); -
Synchronisiere die Anwendungsstate
// 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);});
Uhranwendung implementieren
Abschnitt: „Uhranwendung implementieren“Ihre Uhranwendung 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: „API Referenz“sendMessage(options: SendMessageOptions)
Abschnitt: „sendMessage(options: SendMessageOptions)“Ein interaktives Nachricht an das Uhrsenden. 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 zum Synchronisieren.
transferUserInfo(options: TransferUserInfoOptions)
Abschnitt mit dem Titel “transferUserInfo(options: TransferUserInfoOptions)”Benutzerinformationen für eine zuverlässige Lieferung in der Warteschlange legen.
Parameter:
userInfo: Objekt - Die Benutzerinformationen zum Übertragen.
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: Object - Die Antwortdaten
getInfo()
Abschnitt mit dem Titel “getInfo()”Status der Verbindung zum Watch abrufen.
Rückgabewert: WatchInfo Objekt mit:
isSupported: boolean - Ob WatchConnectivity verfügbar istisPaired: boolean - Ob ein Watch pairt istisWatchAppInstalled: boolean - Ob eine Watch-App installiert istisReachable: boolean - Ob der Watch erreichbar istactivationState: Zahl - Sitzungsstatus (0/1/2)
getPluginVersion()
Abschnitt: ‘getPluginVersion()’Erhalten Sie die native Pluginversion.
Events
Abschnitt: ‘Events’| Event | Beschreibung |
|---|---|
messageReceived | Einfache Nachricht von Watch |
messageReceivedWithReply | Nachricht, die eine Antwort erwartet (enthält callbackId) |
applicationContextReceived | Update des Kontexts von Watch |
userInfoReceived | Übertragung von Benutzerinformationen von Watch |
reachabilityChanged | Verbindung zum Watch wurde geändert |
activationStateChanged | Sitzung aktivierungsstatus geändert |
Kommunikationsmuster
Abschnitt mit dem Titel „Kommunikationsmuster”Unmittelbare Nachrichtenübermittlung (sendMessage)
Abschnitt mit dem Titel „Unmittelbare Nachrichtenübermittlung (sendMessage)”- Benötigt, dass der Uhrenschalter erreichbar ist
- Beste Wahl für interaktive, zeitkritische Kommunikation
- Fällt sofort durch, wenn der Uhrenschalter nicht verfügbar ist
Anwendungs Kontext (updateApplicationContext)
Abschnitt mit dem Titel „Anwendungs Kontext (updateApplicationContext)”- Nur der neueste Wert - vorherige Werte werden überschrieben
- Beste Wahl für das Synchronisieren des aktuellen Anwendungsstatus
- Übermittelt, wenn der Watch verfügbar wird
Nutzerinformationen übertragen (transferUserInfo)
Abschnitt mit dem Titel “Nutzerinformationen übertragen (transferUserInfo)”- Angeordnet und in der Reihenfolge übermittelt
- Am besten für wichtige Daten, die übermittelt werden müssen
- Auch dann funktioniert, wenn der Watch vorübergehend nicht erreichbar ist
Plattformhinweise
Abschnitt mit dem Titel “Plattformhinweise”- Benötigt iOS 15.0 oder später
- Mit dem WatchConnectivity-Framework verwendet
- Sitzung aktiviert sich automatisch bei Plugin-Laden
- Unterstützt Hintergrundlieferung für Kontext und Benutzerinfo
- Nicht unterstützt (Apple Watch ist iOS-only)
- Alle Methoden lehnen mit entsprechender Fehler ab
getInfo()returnsisSupported: false
- Nicht unterstützt
- Alle Methoden lehnen mit unavailable Fehler ab
getInfo()returnsisSupported: false
Gemeinsame Anwendungsfälle
Abschnitt mit dem Titel „Gemeinsame Anwendungsfälle”- Daten Synchronisierung: Halten Sie die Daten von Telefon und Uhr in Echtzeit synchron.
- Fernsteuerung: Steuern Sie die Funktionen des Telefons von der Uhr aus.
- Benachrichtigungen: Senden Sie benutzerdefinierte Benachrichtigungen an die Uhr.
- Gesundheitsdaten: Teilen Sie Fitness- und Gesundheitsmetriken.
- Mediensteuerung: Steuern Sie die Musikwiedergabe von der Uhr aus.
- Smart Home: Geräte über den Arm steuern
Troubleshooting
Sektion: "Fehlerbehebung"Watch nicht erreichbar:
- Stellen Sie sicher, dass der Watch in Bluetooth-Range ist
- Überprüfen Sie, ob beide Apps läuft
- Stellen Sie sicher, dass WCSession auf beiden Seiten aktiviert ist
Nachrichten werden nicht empfangen:
- Überprüfen Sie, ob Hörer vor dem Senden registriert sind
- Stellen Sie sicher, dass die Watch-App WCSessionDelegate implementiert
- Verwenden Sie
transferUserInfofür eine sichere Lieferung
Sitzung nicht aktivieren:
- Stellen Sie sicher, dass die WatchConnectivity-Fähigkeit in Xcode hinzugefügt ist
- Überprüfen Sie, ob die Uhranwendung die Begleit-Bundle-ID hat
- Stellen Sie sicher, dass beide Apps auf kompatible Betriebssystemversionen zielen
Weiter geht es von Getting Started
Abschnitt mit dem Titel “Weiter geht es von Getting Started”Wenn Sie Getting Started zur Planung von native Plugin-Arbeiten verwenden, verbinden Sie es mit Mit @capgo/capacitor-watch für die native Fähigkeit in Mit @capgo/capacitor-watch, Plugin-Verzeichnis von Capgo für den Produktworkflow in Plugin-Verzeichnis von Capgo, 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 den Produktworkflow in Ionic Enterprise-Plugin-Alternativen.