Zum Inhalt springen

Getting Started

GitHub
  1. Installieren Sie das Paket

    Terminalfenster
    bun add @capgo/capacitor-watch
  2. Synchronisieren Sie mit native Projekten

    Terminalfenster
    bunx cap sync
  3. Konfigurieren Sie das Plugin

    Grundlegender Beispielsatz: Basic Usage Example

    import { CapgoWatch } from '@capgo/capacitor-watch';
    // Check watch connectivity status
    const info = await CapgoWatch.getInfo();
    console.log('Watch paired:', info.isPaired);
    console.log('Watch reachable:', info.isReachable);
    // Listen for messages from watch
    await CapgoWatch.addListener('messageReceived', (event) => {
    console.log('Message from watch:', event.message);
    });

    Senden Sie eine Nachricht an Watch:

    // Check if watch is reachable first
    const info = await CapgoWatch.getInfo();
    if (info.isReachable) {
    await CapgoWatch.sendMessage({
    data: { action: 'refresh', timestamp: Date.now() }
    });
    }

    Erforderliche iOS-Einrichtung:

    1. Fügen Sie der iOS-Anwendung in Xcode die WatchConnectivity-Fähigkeit hinzu
    2. Erstellen Sie ein watchOS-Anwendungsziel in Ihrem Xcode-Projekt
    3. Implementieren Sie WatchConnectivity in Ihrer watchOS-Anwendung (siehe Implementierung des Watch-Apps unten)

    Der Plugin aktiviert die WCSession automatisch, wenn das Plugin geladen wird.

  4. Nachrichten, auf die eine Antwort erforderlich ist

    // Listen for messages that need a response
    await CapgoWatch.addListener('messageReceivedWithReply', async (event) => {
    console.log('Request from watch:', event.message);
    // Process the request
    const result = await processWatchRequest(event.message);
    // Send reply back to watch
    await CapgoWatch.replyToMessage({
    callbackId: event.callbackId,
    data: { result }
    });
    });
  5. Synchronisiere Anwendungsstatus

    // Update application context (latest value only)
    await CapgoWatch.updateApplicationContext({
    context: {
    theme: 'dark',
    userId: '123',
    lastSync: Date.now()
    }
    });
    // Listen for context updates from watch
    await CapgoWatch.addListener('applicationContextReceived', (event) => {
    console.log('Context from watch:', event.context);
    });
  6. 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 transfers
    await CapgoWatch.addListener('userInfoReceived', (event) => {
    console.log('User info from watch:', event.userInfo);
    });
  7. Verbindung überwachen

    // Track reachability changes
    await CapgoWatch.addListener('reachabilityChanged', (event) => {
    console.log('Watch reachable:', event.isReachable);
    if (event.isReachable) {
    // Watch is now available for interactive messaging
    }
    });
    // Track session activation state
    await CapgoWatch.addListener('activationStateChanged', (event) => {
    // 0 = notActivated, 1 = inactive, 2 = activated
    console.log('Session state:', event.state);
    });

Überwachung der App-Implementierung

Überwachung der App-Implementierung

Ihre Uhranwendungen müssen WatchConnectivity implementieren. Hier ist ein Beispiel für SwiftUI:

import SwiftUI
import WatchConnectivity
@main
struct 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)")
}
}

Ein interaktives Nachricht senden an den Uhren. Erfordert, dass die Uhr erreichbar ist.

Parameter:

  • data: Objekt - Die Daten, die an die Uhr gesendet werden.

Die Anwendungskontext aktualisieren. Nur der letzte Wert wird gespeichert.

Parameter:

  • context: Objekt - Die Kontextdaten, die synchronisiert werden.

Benutzerinformationen für zuverlässige Lieferung in Warteschlange setzen.

Parameter:

  • userInfo: Objekt - Die zu übertragenden Benutzerinformationen

Antwort auf eine Nachricht, die eine Antwort erforderte.

Parameter:

  • callbackId: string - Die Callback-ID aus dem Ereignis messageReceivedWithReply
  • data: Objekt - Die Antwortdaten

Verbindungszustand des Smartwatches abrufen.

Rückgabewert: WatchInfo Objekt mit:

  • isSupported: boolean - Ob WatchConnectivity verfügbar ist
  • isPaired: boolean - Ob ein Armband gepaart ist
  • isWatchAppInstalled: boolean - Ob eine Armband-App installiert ist
  • isReachable: boolean - Ob das Armband erreichbar ist
  • activationState: number - Sitzungsstatus (0/1/2)

Ermitteln Sie die native Pluginversion.

EreignisBeschreibung
messageReceivedEinfache Nachricht von der Uhr
messageReceivedWithReplyNachricht, die eine Antwort erwartet (enthält callbackId)
applicationContextReceivedUhr-Context-Update
userInfoReceivedÜbertragung von Benutzerinformationen von der Uhr
reachabilityChangedUhr-Verbindung geändert
activationStateChangedStatus der Sitzungsaktivierung geändert

Echtzeit-Nachrichten (sendMessage)sendMessage)

Abschnitt mit dem Titel „Echtzeit-Nachrichten (sendMessage)“
  • Braucht Uhr zu erreichen
  • Am besten für interaktive, zeitkritische Kommunikation
  • Falls sofort aus, wenn Watch nicht verfügbar ist
  • Erstes neuestes Wert - vorherige Werte werden überschrieben
  • Am besten geeignet für das Synchronisieren des aktuellen App-Zustands
  • Übertragen, wenn Watch verfügbar wird
  • Angefordert und in der Reihenfolge übertragen
  • Am besten geeignet für wichtige Daten, die übertragen werden müssen
  • Arbeitet auch, wenn der Watch vorübergehend nicht erreichbar ist
  • Benötigt iOS 15.0 oder höher
  • Macht Verwendung des WatchConnectivity-Frameworks
  • 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() __CAPGO_KEEP_0__ isSupported: false
  • Not supported
  • Alle Methoden lehnen mit einer Fehlermeldung ab, die anzeigt, dass die Funktion nicht verfügbar ist
  • getInfo() returns isSupported: false
  1. Daten-Synchronisierung: Synchronisiere Uhr und Telefon-Daten
  2. Fernsteuerung: Steuere Telefon-Funktionen von der Uhr aus
  3. Benachrichtigungen: Benachrichtigungen an den Uhr anpassen
  4. Gesundheitsdaten: Fitness- und Gesundheitsdaten teilen
  5. Mediensteuerung: Musikwiedergabe von der Uhr steuern
  6. Smart Home: Geräte von der Uhr steuern

Uhr nicht erreichbar:

  • Überprüfen Sie, ob die Uhr in Bluetooth-Range ist
  • Stellen Sie sicher, dass 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 Uhranzeige die WCSessionDelegate implementiert
  • Verwenden Sie transferUserInfo für eine sichere Zustellung

Sitzung nicht aktiviert:

  • Stellen Sie sicher, dass die WatchConnectivity-Fähigkeit in Xcode hinzugefügt ist
  • Überprüfen Sie, ob die Uhranzeige die Begleit-Bundle-ID hat
  • Überprüfen Sie, ob beide Apps auf kompatible Betriebssystemversionen zielen

If Sie native Plugins verwenden, Starten Sie mit um 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-Ordner für den Produktworkflow in Capgo Plugin-Ordner, 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 das Produktworkflow in Ionic Enterprise Plugin Alternativen.