Getting Started
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 AI-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-pluginsEinschließlich Installieren, Synchronisieren und der Quellmarkdowntext.
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
Grundlegender Beispielcode:
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 die WatchConnectivity-Fähigkeit in Xcode 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. 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
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 „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 Watch-App installiert istisReachable: boolean - Ob Watch erreichbar istactivationState: number - Sitzungsstatus (0/1/2)
getPluginVersion()
Sektion mit Titel “getPluginVersion()”Die native Pluginversion abrufen.
| Event | Beschreibung |
|---|---|
messageReceived | Einfache Nachricht vom Watch |
messageReceivedWithReply | Nachricht mit Antwort (enthält callbackId) |
applicationContextReceived | Update des Kontexts von watch |
userInfoReceived | Übertragung von Benutzerinformationen von watch |
reachabilityChanged | Verbindung zum Watch wurde geändert |
activationStateChanged | Zustand der Sitzung wurde geändert |
Kommunikationsmuster
Abschnitt mit dem Titel “Kommunikationsmuster”Echtzeit-Messaging (sendMessage)sendMessage)
Abschnitt mit dem Titel “Echtzeit-Messaging (sendMessage)”- Benötigt, dass das Watch erreichbar ist
- Am besten geeignet für interaktive, zeitkritische Kommunikation
- Versagt sofort, wenn das Watch nicht verfügbar ist
Anwendungs-Kontext (updateApplicationContext)
Abschnitt mit dem Titel “Anwendungskontext (updateApplicationContext)”- Erstes Wert nur - Vorgängewerte werden überschrieben
- Am besten geeignet für die Synchronisierung des aktuellen Anwendungsstatus
- Wird geliefert, wenn der Watch verfügbar wird
Benutzerinformationen übertragen (transferUserInfo)
Abschnitt mit dem Titel “Benutzerinformationen übertragen (transferUserInfo)”- Angefordert und geliefert in der Reihenfolge
- Am besten geeignet 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
- Nicht unterstützt
- Alle Methoden lehnen mit unavailable-Fehler ab
getInfo()gibt zurückisSupported: false
Gemeinsame Verwendungsfälle
Abschnitt mit dem Titel “Gemeinsame Verwendungsfälle”- Daten-Synchronisation: Synchronisiere Daten von 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 aus steuern
Schulung und Support
: Fehlerbehebung und LösungenSektion mit dem Titel "Schulung und Support"
- Uhr nicht erreichbar:
- Stellen Sie sicher, dass die Uhr in Bluetooth-Range ist
- Überprüfen Sie, ob beide Apps läuft
Überprüfen Sie, ob WCSession auf beiden Seiten aktiviert ist
- Ü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-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 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.