Einführung
Kopieren Sie eine Einrichtungsanleitung mit den Installationsanweisungen und der vollständigen Markdown-Guideline für dieses 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.
Abschnitt 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 eine 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-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)") }}Referenz zu API
Abschnitt: Referenz zu APIsendMessage(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
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 einstellen.
Parameter:
userInfo: Objekt - Die Benutzerinformationen zum Übertragen
replyToMessage(options: ReplyMessageOptions)
Abschnitt mit dem Titel „Antwort auf Nachricht (options: ReplyMessageOptions)“Antwort 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()“Verbindungszustand des Uhren-Netzwerks abrufen
Rückgabewerte: WatchInfo Objekt mit:
isSupported: boolean - Ob WatchConnectivity verfügbar istisPaired: boolean - Ob ein Watch gepaart istisWatchAppInstalled: boolean - Ob eine Watch-App installiert istisReachable: boolean - Ob das Watch erreichbar istactivationState: number - Sitzungsstatus (0/1/2)
getPluginVersion()
Abschnitt mit Titel “getPluginVersion()”Ermitteln Sie die native Pluginversion.
Ereignisse
Abschnitt mit Titel “Ereignisse”| Ereignis | Beschreibung |
|---|---|
messageReceived | Einfache Nachricht vom Watch |
messageReceivedWithReply | Nachricht, die eine Antwort erwartet (enthält callbackId) |
applicationContextReceived | Update vom Kontext der Uhr |
userInfoReceived | Übertragung von Benutzerinformationen von der Uhr |
reachabilityChanged | Verbindung zur Uhr geändert |
activationStateChanged | Zustand der Sitzung aktiviert wurde |
Kommunikationsmuster
Abschnitt mit dem Titel „Kommunikationsmuster“Echtzeit-Messaging (sendMessage)sendMessage)
Abschnitt mit dem Titel „Echtzeit-Messaging (sendMessage)“- Benötigt, dass die Uhr erreichbar ist
- Am besten für interaktive, zeitkritische Kommunikation geeignet
- Fällt sofort durch, wenn die Uhr nicht verfügbar ist
Anwendungs Kontext (updateApplicationContext)
Abschnitt mit dem Titel „Anwendungskontext (updateApplicationContext)“- Erstes Wert nur - vorherige Werte werden überschrieben
- Am besten geeignet für die Synchronisierung des aktuellen Anwendungsstatus
- Übermittelt, wenn der Watch verfügbar wird
Benutzerinformationen übertragen (transferUserInfo)
Abschnitt mit dem Titel „Benutzerinformationen übertragen (transferUserInfo)“- Angefordert und übermittelt in der Reihenfolge
- Am besten geeignet für wichtige Daten, die übermittelt 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
- Nicht unterstützt
- Alle Methoden lehnen mit unavailable-Fehler ab
getInfo()gibt zurückisSupported: false
Gemeinsame Anwendungsfälle
Abschnitt mit dem Titel “Gemeinsame Anwendungsfälle”- Daten-Synchronisation: Synchronisiere Watch- und Telefon-Daten
- Fernsteuerung: Steuere Telefon-Funktionen 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
Fehlersuche
Abschnitt mit dem Titel "Fehlersuche"Uhr nicht erreichbar:
- Stellen Sie sicher, dass die Uhr im Bluetooth-Range 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 registriert sind, bevor Sie senden
- Stellen Sie sicher, dass die Watch-App die WCSessionDelegate implementiert
- Verwenden Sie
transferUserInfofür eine sichere Lieferung
Sitzung nicht aktiviert:
- Stellen Sie sicher, dass die WatchConnectivity-Fähigkeit in Xcode hinzugefügt ist
- Überprüfen Sie, ob die Watch-App den Begleit-Bundle-Id hat
- Stellen Sie sicher, dass beide Apps auf kompatible Betriebssystemversionen zielen
Fahren Sie mit dem
Abschnitt mit dem Titel “Fahren Sie mit demWenn Sie Fahren Sie mit dem 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, 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.