,
Ein kopierbarer Einrichtungsvorschlag mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin erstellen.
Diese Anleitung führt Sie durch die Erstellung einer watchOS-Kompanion-App von Grund auf, einschließlich Projekt-Einrichtung in Xcode, Integration des CapgoWatchSDK und der Erstellung einer funktionsfähigen Uhr-App mit SwiftUI.
Voraussetzungen
Abschnitt mit dem Titel „Voraussetzungen“Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:
- Xcode 15 oder später (herunterladen vom Mac App Store)
- macOS Sonoma oder später (für die neueste Version von watchOS SDK)
- Eine bestehende Capacitor-iOS-Projekt (ausführen, wenn Sie noch nicht haben)
npx cap add iosEin Apple-Entwicklerkonto - (ein kostenloses Konto reicht für die Entwicklung aus) Voraussetzungen
Projektstrukturübersicht
Sektion mit dem Titel „Projektstrukturübersicht“Nach Abschluss dieser Anleitung wird Ihr Projekt diese Struktur haben:
Verzeichnisios/
VerzeichnisApp/
Verzeichnis(Ihr Haupt-iOS-Anwendung) App.xcodeproj
- …
- App.xcworkspace
- __CAPGO_KEEP_0__ (use this to open the Projekt)
- Podfile
VerzeichnisMyWatch/ (neue Uhr app)
VerzeichnisMyWatch/ (Quelle der Uhr app)
- MyWatchApp.swift
- ContentView.swift
VerzeichnisAssets.xcassets/
- …
- MeineWatch.xcodeproj
Schritt 1: Öffnen Sie Ihr iOS-Projekt in Xcode
Abschnitt mit dem Titel „Schritt 1: Öffnen Sie Ihr iOS-Projekt in Xcode”- Navigieren Sie zu Ihrem Capacitor-Projekt in Ihrem
ios/AppOrdner - Öffnen
App.xcworkspace(nicht.xcodeproj) durch Doppelklicken darauf - Warten Sie, bis Xcode das Projekt indexiert
Schritt 2: Fügen Sie einen watchOS-Ziel hinzu
Abschnitt mit dem Titel „Schritt 2: Fügen Sie einen watchOS-Ziel hinzu“-
Gehen Sie in Xcode zu Datei → Neues → Ziel…
-
In der Vorlagenauswahl:
- Wählen Sie watchOS Registerkarte oben
- Wählen Sie App
- Klicken Sie Zurück
-
Konfigurieren Sie Ihre Uhranwendung:
- Produktname:
MyWatch(oder Ihr bevorzugter Name) - Team: Wählen Sie Ihr Apple-Entwicklerteam
- Organisations-Identifier: Sollte Ihrem iOS-App (z.B.
app.capgo) - Bundle-Identifier: Wird automatisch generiert (z.B.
app.capgo.myapp.watchkitapp) - SpracheSwift
- BenutzerschnittstelleSwiftUI
- Arten von Apple Watch AppsApp (keine App für bestehende iOS-App)
- Entfernen Benachrichtigungen einschließen (es sei denn, Sie benötigen es)
- Entfernen Komplikationen einschließen (es sei denn, Sie benötigen es)
- Produktname:
-
Klicken Abschließen
-
Wenn Sie aufgefordert werden “Die ‘MyWatch’-Schematik aktivieren?”, klicken Sie Aktivieren
Schritt 3: Konfigurieren Sie die Watch-App-Einstellungen
Abschnitt mit dem Titel “Schritt 3: Konfigurieren Sie die Watch-App-Einstellungen”-
Wählen Sie in der Projekt-Navigator-Leiste (links) Ihr Projekt (das blaue Icon oben) aus
-
Wählen Sie Ihr Watch-Target (z.B. “MyWatch”) aus der Liste der Ziele
-
Gehe zur Allgemein Registerkarte:
- Anzeigename:Der Name, der unter der App-Icon-Anzeige angezeigt wird (z.B. “Meine App”)
- Bundleschlüssel: Soll mit
.watchkitapp - Version: Passen Sie Ihre iOS-Anwendungsversion an
- Build: Passen Sie Ihre iOS-Buildnummer an
-
Zu Zertifizierung und Fähigkeiten tab:
- Aktivieren Automatisch die Zertifizierung verwalten
- Wählen Sie Ihr Team
- Xcode wird Provisionierungsprofile automatisch erstellen
-
Setzen Deployments-Info:
- Mindestanforderungen an Deployments: watchOS 9.0 oder später
Schritt 4: Fügen Sie CapgoWatchSDK über Swift Package Manager hinzu
Abschnitt mit dem Titel „Schritt 4: Fügen Sie CapgoWatchSDK über Swift Package Manager hinzu“Das CapgoWatchSDK bietet eine fertige Lösung für die Kommunikation. WatchConnector In Xcode gehen Sie zu
-
Datei → Abhängigkeiten hinzufügen… Die CapgoWatchSDK bietet eine fertige Lösung für die Kommunikation.
-
In der Suchfeld, eingeben:
https://github.com/Cap-go/capacitor-watch.git -
Drücken Sie Enter und warten Sie, bis Xcode das Paket abruft
-
Konfigurieren Sie das Paket:
- Abhängigkeitsregel: „Bis zur nächsten Hauptversion“ mit „8.0.0“
- Klicken Sie Paket hinzufügen
-
Wählen Sie, welche Produkte hinzugefügt werden sollen:
- WICHTIG: Wählen Sie nur
CapgoWatchSDK - Stellen Sie sicher, dass es zu Ihren Produkten hinzugefügt ist Zielgerät überwachen (z. B. „Mein Uhr“), nicht die iOS-Anwendung
- Klicken Paket hinzufügen
- WICHTIG: Wählen Sie nur
Abschnitt mit dem Titel „Schritt 5: Implementieren Sie die Uhranwendung“
Erstellen wir nun die Uhranwendung __CAPGO_KEEP_0__. Ersetzen Sie die automatisch generierten Dateien durch die folgenden:Now let’s create the watch app code. Replace the auto-generated files with the following:
5.1 App-Einstiegspunkt erstellen
Abschnitt mit dem Titel „5.1 App-Einstiegspunkt erstellen“Bearbeiten MyWatch/MyWatchApp.swift:
import SwiftUIimport CapgoWatchSDK
@mainstruct MyWatchApp: App { init() { // Activate WatchConnectivity when app launches WatchConnector.shared.activate() }
var body: some Scene { WindowGroup { ContentView() } }}5.2 Hauptansicht erstellen
Abschnitt mit dem Titel „5.2 Hauptansicht erstellen“Bearbeiten MyWatch/ContentView.swift:
import SwiftUIimport CapgoWatchSDK
struct ContentView: View { // Observe the WatchConnector for automatic UI updates @ObservedObject var connector = WatchConnector.shared
// Local state @State private var messageText = "" @State private var statusMessage = "Ready"
var body: some View { ScrollView { VStack(spacing: 16) { // Connection Status ConnectionStatusView(connector: connector)
Divider()
// Message Input TextField("Message", text: $messageText) .textFieldStyle(.roundedBorder)
// Send Buttons HStack { Button("Send") { sendMessage() } .disabled(!connector.isReachable || messageText.isEmpty)
Button("Request") { sendWithReply() } .disabled(!connector.isReachable || messageText.isEmpty) }
Divider()
// Status Text(statusMessage) .font(.caption) .foregroundColor(.secondary)
// Last Received Message if !connector.lastMessage.isEmpty { VStack(alignment: .leading) { Text("Last Message:") .font(.caption) .foregroundColor(.secondary) Text(formatMessage(connector.lastMessage)) .font(.caption2) } .frame(maxWidth: .infinity, alignment: .leading) } } .padding() } }
private func sendMessage() { connector.sendMessage(["text": messageText, "timestamp": Date().timeIntervalSince1970]) statusMessage = "Message sent" messageText = "" }
private func sendWithReply() { connector.sendMessage(["text": messageText, "needsReply": true]) { reply in DispatchQueue.main.async { statusMessage = "Reply: \(formatMessage(reply))" } } messageText = "" }
private func formatMessage(_ message: [String: Any]) -> String { message.map { "\($0.key): \($0.value)" }.joined(separator: ", ") }}
// Separate view for connection statusstruct ConnectionStatusView: View { @ObservedObject var connector: WatchConnector
var body: some View { HStack { Circle() .fill(connector.isReachable ? Color.green : Color.red) .frame(width: 12, height: 12)
Text(connector.isReachable ? "Connected" : "Disconnected") .font(.headline)
Spacer()
if connector.isActivated { Image(systemName: "checkmark.circle.fill") .foregroundColor(.green) } } }}
#Preview { ContentView()}Schritt 6: iOS-App für WatchConnectivity konfigurieren
Abschnitt mit dem Titel „Schritt 6: iOS-App für WatchConnectivity konfigurieren“Ihre iOS-App benötigt die WatchConnectivity-Fähigkeit.
-
Wählen Sie in der Projekt-Navigator Ihr Projekt aus.
-
Wählen Sie Ihr iOS App Ziel (kein Ziel für die Uhr)
-
Gehe zu Signierung und Fähigkeiten Registerkarte
-
Klicken Sie + Fähigkeit
-
Suchen Sie nach und fügen Sie WatchConnectivity (wenn verfügbar) oder es wird möglicherweise automatisch hinzugefügt
-
Das Plugin Capacitor handhabt die iOS-Seite automatisch, aber stellen Sie sicher, dass Ihr Info.plist folgende enthält:
<key>WKCompanionAppBundleIdentifier</key><string>app.capgo.myapp.watchkitapp</string>
Schritt 7: Erstellen und Ausführen
Abschnitt mit dem Titel „Schritt 7: Erstellen und Ausführen“Auf dem Simulator ausführen
Abschnitt mit dem Titel „Auf dem Simulator ausführen“-
Wählen Sie Ihr Watch-Schema aus der Schemeselektor (oben im Xcode-Fenster)
-
Wählen Sie einen Apple Watch-Simulator:
- Klicken Sie auf den Geräteauswahlbutton neben dem Schema
- Wählen Sie einen Apple Watch-Simulator (z.B. „Apple Watch Series 9 (45mm)“)
-
Klicken Sie auf den Ausführen Button (▶️) oder drücken Sie
Cmd + R -
Der iOS Simulator wird mit beiden iPhone und Apple Watch gestartet
Auf physischem Gerät ausführen
Abschnitt mit dem Titel „Auf physischem Gerät ausführen”-
Verbinden Sie Ihr iPhone über USB
-
Stellen Sie sicher, dass Ihr Apple Watch mit diesem iPhone pairt ist
-
Wählen Sie Ihr Watch-Schema
-
Wählen Sie Ihr physisches Apple Watch aus der Geräteliste
-
Klicken Sie Ausführen
-
Erstes Mal: Sie müssen auf beiden Geräten Ihr Computer vertrauen
Schritt 8: Kommunikation testen
Abschnitt mit dem Titel „Schritt 8: Kommunikation testen“Von iPhone (Capacitor) zu Watch
Abschnitt mit dem Titel „Von iPhone (Capacitor) zu Watch“In Ihrer Capacitor-App:
import { CapgoWatch } from '@capgo/capacitor-watch';
// Check connectionconst info = await CapgoWatch.getInfo();console.log('Watch reachable:', info.isReachable);
// Send a messageif (info.isReachable) { await CapgoWatch.sendMessage({ data: { action: 'update', value: 'Hello from iPhone!' } });}Von Watch zu iPhone
Abschnitt mit dem Titel „Von Watch zu iPhone“Die Watch-App verwendet WatchConnector:
// Send message (fire and forget)WatchConnector.shared.sendMessage(["action": "buttonTapped"])
// Send message with replyWatchConnector.shared.sendMessage(["request": "getData"]) { reply in print("Got reply: \(reply)")}Nachrichten auf iPhone verarbeiten
Abschnitt: „Nachrichten auf iPhone verarbeiten“// Listen for messages from watchawait CapgoWatch.addListener('messageReceived', (event) => { console.log('Message from watch:', event.message); // { action: 'buttonTapped' }});
// Handle messages that need a replyawait CapgoWatch.addListener('messageReceivedWithReply', async (event) => { console.log('Request from watch:', event.message);
// Send reply back await CapgoWatch.replyToMessage({ callbackId: event.callbackId, data: { status: 'success', items: ['item1', 'item2'] } });});Erweitert: Benutzerdefinierte Delegate für mehr Kontrolle
Abschnitt: „Erweitert: Benutzerdefinierte Delegate für mehr Kontrolle“Wenn Sie mehr Kontrolle benötigen, implementieren Sie WatchConnectorDelegate:
import SwiftUIimport CapgoWatchSDK
class WatchHandler: WatchConnectorDelegate { func didReceiveMessage(_ message: [String: Any]) { print("Received: \(message)") // Handle incoming message }
func didReceiveMessageWithReply(_ message: [String: Any], replyHandler: @escaping ([String: Any]) -> Void) { print("Received request: \(message)") // Process and send reply replyHandler(["status": "processed"]) }
func didReceiveApplicationContext(_ context: [String: Any]) { print("Context updated: \(context)") }
func didReceiveUserInfo(_ userInfo: [String: Any]) { print("User info received: \(userInfo)") }
func reachabilityDidChange(_ isReachable: Bool) { print("Reachability changed: \(isReachable)") }
func activationDidComplete(with state: WCSessionActivationState) { print("Activation completed: \(state.rawValue)") }}
// In your app setup:let handler = WatchHandler()WatchConnector.shared.delegate = handlerWatchConnector.shared.activate()Fehlersuche
Abschnitt: „Fehlersuche“App auf Uhr nicht sichtbar
Abschnitt: „App auf Uhr nicht sichtbar“- Sicherstellen, dass die Bundle-IDs korrekt miteinander in Beziehung stehen (Watch-App-Bundle-ID sollte iOS-App-Bundle-ID +
.watchkitapp) - Überprüfen, ob beide Apps mit demselben Team signiert sind
- Bei physischem Gerät: Öffnen Sie die Watch-App auf dem iPhone → Meine Uhr → scrollen Sie, um Ihre App zu finden → Aktivieren Sie mit der Schaltfläche
Nicht empfangene Nachrichten
Abschnitt mit dem Titel „Nicht empfangene Nachrichten“- Überprüfen Sie, ob beide Apps die WCSession aktiviert haben
- Überprüfen
isReachablevor dem Senden von Nachrichten - Für eine sichere Zustellung verwenden Sie
transferUserInfoanstattsendMessage - Sicherstellen, dass die Listener vor dem Senden von Nachrichten durch das andere Gerät registriert sind
Fehler „Sitzung nicht aktiviert“
Abschnitt mit dem Titel „Sitzung nicht aktiviert“- Rufen Sie
WatchConnector.shared.activate()frühzeitig im Lebenszyklus der App - On iOS aktiviert sich der Plugin automatisch - stellen Sie sicher, dass das Plugin importiert ist
- Überprüfen Sie, ob die WatchConnectivity-Fähigkeit zur iOS-Zielgruppe hinzugefügt wurde
Build-Fehler mit CapgoWatchSDK
Abschnitt mit dem Titel „Build-Fehler mit CapgoWatchSDK“- Stellen Sie sicher, dass das Paket zur Watch-Zielgruppeund nicht zur iOS-Zielgruppe
- Ordnen Sie den Build-Ordner auf Produkt → Ordner für den Build löschen (Cmd + Shift + K)
- Paket-Caches zurücksetzen: Datei → Pakete → Paket-Caches zurücksetzen
Simulator-Probleme
Abschnitt mit dem Titel „Simulator-Probleme“- Die Simulator zurücksetzen: Gerät → Alle Inhalte und Einstellungen löschen
- Stellen Sie sicher, dass iOS- und watchOS-Simulator ein kompatibles Paar sind
- Beide Simulator müssen läuft, damit die Kommunikation funktioniert
Nächste Schritte
Abschnitt mit dem Titel „Nächste Schritte“- API Referenz - Vollständige API Dokumentation
- Kommunikationsmuster - Wann Sie jede Methode verwenden sollten
- Beispiel-App - Vollständiges funktionierendes Beispiel
Fortsetzen Sie von der Erstellung einer App für watchOS
Abschnitt mit dem Titel “Fortsetzen Sie von der Erstellung einer App für watchOS”Wenn Sie native Plugin-Arbeit planen, verbinden Sie es mit Mit @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-watch für die native Fähigkeit in Mit @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-watch Using @capgo/capacitor-watch for the native capability 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, 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.