Getting Started
Eine Einrichtungsanweisung 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.
Installation
Abschnitt mit dem Titel „Installation“You können unsere AI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie den Capgo-Fähigkeiten Ihrer AI-Werkzeugleiste mit folgendem Befehl hinzu:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsDann verwenden Sie 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 aufgeführten plattform-spezifischen Anweisungen:
-
Das Paket installieren
Terminalfenster bun add @capgo/capacitor-watch -
Mit der native Projekte synchronisieren
Terminalfenster bunx cap sync -
Die Plugin-Konfiguration anpassen
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);});Eine Nachricht an den Watch senden:
// 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 einen watchOS-Anwendungsziel
- Implementieren Sie WatchConnectivity in Ihrer watchOS-Anwendung (siehe Implementierung des Watch-Apps unten)
Das Plugin aktiviert die WCSession automatisch, wenn das Plugin geladen wird.
Apple Watch wird nur auf iOS unterstützt. Auf Android werden alle Methoden mit dem Fehler „Apple Watch wird nur auf iOS unterstützt“ abgelehnt. Die
getInfo()Die Methode gibt zurückisSupported: false. -
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 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);}); -
Verbindungsstatus ü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);});
Uhranwendungsimplementierung
Abschnitt mit dem Titel „Uhranwendungsimplementierung“Ihr watchOS-App 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 den Uhren. Erfordert, dass die Uhr erreichbar ist.
Parameter:
dataObject - Die Daten, die an die Uhr gesendet werden
updateApplicationContext(options: UpdateContextOptions)
Abschnitt mit dem Titel „updateApplicationContext(options: UpdateContextOptions)”Die Anwendungscontext aktualisieren. Nur der letzte Wert wird gespeichert.
Parameter:
context: Objekt - Der Synchronisationskontext
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 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()”Verbindungsstatus der Uhr ermitteln.
Rückgabewert: WatchInfo Objekt mit:
isSupported: boolean - Ob WatchConnectivity verfügbar istisPaired: boolean - Ob eine Uhr gepaart istisWatchAppInstalled: boolean - Ob eine Uhr-App installiert istisReachable: boolean - Ob die Uhr erreichbar istactivationState: number - Sitzungsstatus (0/1/2)
getPluginVersion()
Abschnitt mit dem Titel “getPluginVersion()”Stelle die native Pluginversion ein.
| Ereignis | Beschreibung |
|---|---|
messageReceived | Einfacher Nachricht von der Uhr |
messageReceivedWithReply | Nachricht, die eine Antwort erwartet (enthält callbackId) |
applicationContextReceived | Kontextaktualisierung von der Uhr |
userInfoReceived | Benutzerinformationenübertragung von der Uhr |
reachabilityChanged | Uhr-Verbindung geändert |
activationStateChanged | Aktivierungsstatus der Sitzung geändert |
Kommunikationsmuster
Abschnitt mit dem Titel “Kommunikationsmuster” Sofortige Nachrichtenübermittlung (sendMessage)sendMessage)
Abschnitt mit dem Titel “Sofortige Nachrichtenübermittlung (sendMessage)”- Benötigt, dass der Watch erreichbar ist
- Beste Wahl für interaktive, zeitkritische Kommunikation
- Fällt sofort aus, wenn der Watch nicht verfügbar ist
Anwendungs Kontext (updateApplicationContext)
Abschnitt mit dem Titel “Anwendungs Kontext (updateApplicationContext)”- Nur der letzte Wert – vorherige Werte werden überschrieben
- Beste Wahl für das Synchronisieren des aktuellen App-Zustands
- Wird geliefert, wenn der Watch verfügbar wird
Benutzerinfo-Übertragung (transferUserInfo)
Abschnitt mit dem Titel “Benutzerinfo-Übertragung (transferUserInfo)”- In der Reihenfolge eingereiht und geliefert
- Beste Wahl für wichtige Daten, die geliefert werden müssen
- Funktioniert auch, wenn der Watch vorübergehend nicht erreichbar ist
Plattformhinweise
Abschnitt "Plattformhinweise"- 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
Android
Abschnitt "Android"- Nicht unterstützt (Apple Watch ist iOS-only)
- Alle Methoden lehnen mit geeigneter Fehler ab
getInfo()returnsisSupported: false
- Nicht unterstützt
- Alle Methoden lehnen mit unavailable Fehler ab
getInfo()returnsisSupported: false
Gemeinsame Verwendungsfälle
Abschnitt mit dem Titel “Gemeinsame Verwendungsfälle”- Daten SynchronisierungDaten auf Wach- und Telefon synchron halten
- Fernsteuerung: Mobilfunkfunktionen über das Uhrwerk steuern
- Benachrichtigungen: Benutzerdefinierte Benachrichtigungen an das Uhrwerk senden
- Krankheitsdaten: Fitness- und Gesundheitsmetriken teilen
- Mediensteuerung: Musikwiedergabe von der Uhr steuern
- Smart Home: Geräte von der Uhr aus steuern
Problembehandlung
Abschnitt mit dem Titel „Problembehandlung“Uhr nicht erreichbar:
- Stellen Sie sicher, dass der Watch in 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 vor dem Senden registriert sind
- Überprüfen Sie, ob die Watch-App 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
- Überprüfen Sie, ob beide Apps auf kompatible Betriebssystemversionen zielen
Weitermachen von Getting Started
Abschnitt mit dem Titel “Weitermachen von Getting Started”Wenn Sie "Getting Started" verwenden Getting Started um native Plugin-Arbeit zu planen, verbinden Sie es mit Using @capgo/capacitor-watch für die native Fähigkeit in Using @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 das Produktworkflow in Ionic Enterprise Plugin Alternativen.