Einführung
__CAPGO_KEEP_0__ ist ein Produkt von Capgo.
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.
Sektion mit dem Titel „Installation“
Sie können unsere AI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie die __CAPGO_KEEP_0__-Fähigkeiten Ihrem KI-Tool hinzu, indem Sie die folgende Befehlszeile verwenden:You can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsInstallationsanleitung
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.Wenn Sie eine 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
Grundlegende Verwendung Beispiel:
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 in Ihrem Xcode-Projekt eine Zielgruppe für die watchOS-Anwendung
- 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. Der
getInfo()Methode gibt zurückisSupported: false. -
Behandeln Sie 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 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);});
Implementierung der Watch App
Abschnitt: "Implementierung der Watch App"Ihre 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)") }}Referenz zu API
Abschnitt: "Referenz zu API"sendMessage(options: SendMessageOptions)
Abschnitt mit dem Titel „sendMessage(options: SendMessageOptions)”Ein interaktives Nachricht senden an den Watch. Erfordert, dass der Watch erreichbar ist.
Parameter:
data: Objekt - Die Daten, die an den Watch gesendet werden sollen
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 sollen
transferUserInfo(options: TransferUserInfoOptions)
Abschnitt mit dem Titel „transferUserInfo(options: TransferUserInfoOptions)”Benutzerinformationen für eine zuverlässige Lieferung in der Warteschlange einstellen.
Parameter:
userInfo: Objekt - Die Benutzerinformationen zum Übertragen
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()“Erhalte den Status der Watch-Verbindung.
Rückgabewert: WatchInfo Objekt mit:
isSupported: boolean - Ob WatchConnectivity verfügbar istisPaired: boolean - Ob ein Watch paired istisWatchAppInstalled: boolean - Ob eine Watch-App installiert istisReachable: boolean - Ob das Watch erreichbar istactivationState: number - Sitzungsstatus (0/1/2)
getPluginVersion()
Sektion mit dem Titel “getPluginVersion()”Die native Pluginversion abrufen.
| Event | Beschreibung |
|---|---|
messageReceived | Einfache Nachricht vom Watch |
messageReceivedWithReply | Nachricht, die eine Antwort erwartet (enthält callbackId) |
applicationContextReceived | Update vom Watch |
userInfoReceived | Übertragung von Benutzerinformationen vom Watch |
reachabilityChanged | Verbindung zum Watch wurde geändert |
activationStateChanged | Zustand der Sitzung wurde geändert |
Kommunikationsmuster
Abschnitt: KommunikationsmusterEchtzeit-Nachrichten (sendMessage)
Abschnitt: Echtzeit-Nachrichten (sendMessage)- Braucht, dass der Watch erreichbar ist
- Am besten für interaktive, zeitkritische Kommunikation geeignet
- Versagt sofort, wenn der Watch nicht verfügbar ist
Anwendungs Kontext (updateApplicationContext)
Abschnitt mit dem Titel “Anwendungskontext (updateApplicationContext)”- Erstes Wert nur - Vorgängewerte werden überschrieben
- Am besten für die Synchronisierung des aktuellen Anwendungsstatus
- Wird geliefert, wenn der Watch verfügbar wird
Benutzerinformationen-Übertragung (transferUserInfo)
Abschnitt mit dem Titel “Benutzerinformationen-Übertragung (transferUserInfo)”- Angefordert und geliefert in der Reihenfolge
- Am besten für wichtige Daten, die geliefert 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
- Verwendet das WatchConnectivity-Framework
- 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()returnsisSupported: false
- Not unterstützt
- Alle Methoden lehnen mit unavailable-Fehler ab
getInfo()rückgibtisSupported: false
Häufige Anwendungsfälle
Abschnitt mit dem Titel “Häufige Anwendungsfälle”- Daten-Synchronisation: Synchronisiere Daten zwischen Uhr und Telefon
- Fernsteuerung: Steuere Telefonfunktionen von der Uhr aus
- Benachrichtigungen: Sende benutzerdefinierte Benachrichtigungen an die Uhr
- Gesundheitsdaten: Fitness- und Gesundheitsdaten teilen
- Mediensteuerung: Musikwiedergabe von der Uhr steuern
- Smart Home: Geräte von der Uhr steuern
Schwierigkeiten beheben
: Schaltfläche mit dem Titel 'Schwierigkeiten beheben'Die Uhr ist nicht erreichbar:
- Stellen Sie sicher, dass die Uhr 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 registriert sind, bevor Sie senden
- Stellen Sie sicher, dass die Watch-App die WCSessionDelegate implementiert
- Verwenden Sie
transferUserInfozur sicheren Zustellung
Die Sitzung aktiviert sich nicht:
- Stellen Sie sicher, dass die WatchConnectivity-Fähigkeit in Xcode hinzugefügt ist
- Überprüfen Sie, ob die Watch-App den Begleit-App-Bundle-Id hat
- Stellen Sie sicher, dass beide Apps auf kompatible Betriebssystemversionen zielen
Fortsetzen Sie von Getting Started
Abschnitt mit dem Titel “Fortsetzen Sie von Getting Started”Wenn Sie "Getting Started" verwenden Fortsetzen Sie von Getting Started für die 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-Verzeichnis für den Produktworkflow in Capgo Plugin-Verzeichnis, Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo, Hinzufügen oder Aktualisieren von Plugins für die Implementierungsdetails in Hinzufügen oder Aktualisieren von Plugins, und Ionic Enterprise Plugin Alternativen für den Produktworkflow in Ionic Enterprise Plugin Alternativen.