Weitermachen von der Erstellung einer watchOS-App
Einen Einrichtungsprompt mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
Diese Anleitung führt Sie durch die Erstellung einer watchOS-Komponenten-App von Grund auf, einschließlich der Projektierung in Xcode, der Integration des CapgoWatchSDK und der Erstellung einer funktionsfähigen watch-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 das neueste watchOS SDK)
- Ein bestehendes Capacitor iOS-Projekt (ausführen)
npx cap add iosIf Sie noch nicht registriert sind, registrieren Sie sich für ein Konto bei Apple Developer. - Apple-Entwicklerkonto (Ein kostenloses Konto reicht für die Entwicklung aus)
Übersicht über die Projektstruktur
Sektion mit dem Titel “Übersicht über die Projektstruktur”Nach Abschluss dieses Leitfadens wird Ihr Projekt diese Struktur haben:
Verzeichnisios/
VerzeichnisApp/
VerzeichnisApp/ Ihre Hauptanwendung für iOS
- …
- App.xcodeproj
- App.xcworkspace (Verwenden Sie dies, um das Projekt zu öffnen)
- Podfile
VerzeichnisMyWatch/ Verzeichnis
MyWatch/Quelle für die Uhranwendung MyWatchApp.swift
- Verzeichnis
- ContentView.swift
VerzeichnisAssets.xcassets/
- …
- MyWatch.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
ios/AppOrdner - Öffnen
App.xcworkspacenicht.xcodeprojdurch Doppelklicken - 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”-
In Xcode gehen Sie zu Datei → Neu → Ziel…
-
In der Vorlagenauswahl:
- Wählen Sie watchOS Registerkarte oben
- Wählen Sie App
- Klicken Sie Weiter
-
Konfigurieren Sie Ihre Uhranwendung:
- Produktname:
MyWatch(oder Ihr bevorzugter Name) - Team: Wählen Sie Ihr Apple-Entwicklerteam
- Organisations-Identifier: Sollte Ihrem iOS-App entsprechen (z.B.
app.capgo) - Bundle-Identifier: Wird automatisch generiert (z.B.,
app.capgo.myapp.watchkitapp) - Sprache: Swift
- Benutzeroberfläche: SwiftUI
- Arten von Watch-Apps: App (nicht App für bestehende iOS-App)
- Ablehnen Benachrichtigungsszene einschließen (es sei denn, Sie benötigen es)
- Ablehnen Komplikation einschließen (es sei denn, Sie benötigen es)
- Produktname:
-
Klicken Sie Abschließen
-
Wenn Sie aufgefordert werden, ‘MyWatch’-Schematismus zu aktivieren, klicken Sie Aktivieren
Schritt 3: Konfigurieren Sie die Einstellungen für die Uhranwendung
Abschnitt mit dem Titel ‘Schritt 3: Konfigurieren Sie die Einstellungen für die Uhranwendung’-
Gehen Sie in den Projekt- Navigator (linkes Seitenleisten-Element), wählen Sie Ihr Projekt (das blaue Icon oben)
-
Wählen Sie Ihr Ziel für die Uhr (z.B. ‘MyWatch’) aus der Liste der Ziele
-
Gehen Sie zu der Allgemeine Einstellungen Registerkarte:
- Anzeigename: Der Name, der unter dem App-Icon angezeigt wird (z.B. "Mein App")
- Bundle-Identifier: Soll mit
.watchkitapp - Version: Stimmmt mit Ihrer iOS-App-Version überein
- Build: Stimmmt mit Ihrer iOS-App-Build-Nummer überein
-
Zu Zertifizierung und Fähigkeiten Registerkarte:
- Aktivieren Automatisch die Signierung verwalten
- Wählen Sie Ihr Team
- Xcode erstellt die Bereitstellungsprofile automatisch
-
Setzen Bereitstellungs-Info:
- Mindestens Bereitstellungen: 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 WatchConnector Klasse für Kommunikation.
-
In Xcode gehen Sie zu Datei → Hinzufügen von Paketabhängigkeiten…
-
In das Suchfeld eingeben:
https://github.com/Cap-go/capacitor-watch.git -
Drücken Sie Enter und warten Sie, bis Xcode das Paket herunterlädt
-
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 watch target (z.B. „MeinWatch“), nicht die iOS-Anwendung
- Klicken Sie Paket hinzufügen
- WICHTIG: Wählen Sie nur
Schritt 5: Implementieren Sie die Uhr-App
Sektion mit dem Titel „Schritt 5: Implementieren Sie die Uhr-App“Bereiten Sie nun die Uhr-App vor code. Ersetzen Sie die automatisch generierten Dateien durch die folgenden:
5.1 Erstellen Sie den Anwendungsstartpunkt
Sektion mit dem Titel „5.1 Erstellen Sie den Anwendungsstartpunkt“ 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 Erstellen Sie die Hauptansicht
Sektion mit dem Titel „5.2 Erstellen Sie die Hauptansicht“ 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: Konfigurieren Sie die iOS-Anwendung für WatchConnectivity
Abschnitt mit dem Titel “Schritt 6: Konfigurieren Sie die iOS-Anwendung für WatchConnectivity”Ihre iOS-Anwendung benötigt auch die WatchConnectivity-Fähigkeit.
-
Wählen Sie im Projekt-Explorer Ihr Projekt
-
Wählen Sie Ihr iOS-App-Ziel (nicht das Ziel für die Uhr)
-
Gehe zu Zertifizierung und Fähigkeiten Registerkarte
-
Klicken Sie auf + Fähigkeit
-
Suchen Sie nach und fügen Sie sie hinzu WatchConnectivity (wenn verfügbar) oder es wird automatisch hinzugefügt
-
Das Capacitor-Plugin handhabt die iOS-Seite automatisch, aber stelle sicher, dass dein Info.plist folgende Einträge 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 Simulator ausführen
Abschnitt mit dem Titel „Auf Simulator ausführen“-
Wähle Ihr Watch-Schema aus der Schemeselektor (oben im Xcode-Fenster)
-
Wählen Sie einen Apple Watch-Simulator (z.B. „Apple Watch Series 9 (45mm)“)
- 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 Button (▶️) oder drücken Sie Die iOS-Simulator wird mit beiden iPhone und Apple Watch
Cmd + R -
Run on Physical Device
Abschnitt mit dem Titel “Run on Physical Device”
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
-
Run auf Ihrem Gerät ausführen]} Klicken Sie auf den Button (▶️) oder drücken Sie __CAPGO_KEEP_0__
-
Zuerstmal: Sie müssen Ihrem Computer auf beiden Geräten 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 Uhr zu iPhone
Abschnitt: Von Uhr zu iPhoneDie Uhr-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)")}Botschaften auf iPhone bearbeiten
Abschnitt: Botschaften auf iPhone bearbeiten// 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 KontrolleWenn 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()Problembehandlung
Abschnitt mit dem Titel „Fehlersuche“App auf Uhren nicht sichtbar
Abschnitt mit dem Titel „App auf Uhren nicht sichtbar“- Stellen Sie sicher, dass die Bundle-IDs korrekt miteinander in Beziehung stehen (die Bundle-ID der Uhren-App sollte die Bundle-ID der iOS-App sein +
.watchkitapp) - Überprüfen Sie, ob beide Apps mit demselben Team signiert sind
- Auf physischem Gerät: Öffnen Sie die Uhren-App auf dem iPhone → Meine Uhr → scrollen Sie, um Ihre App zu finden → Aktivieren Sie sie
Nicht empfangene Nachrichten
Abschnitt mit dem Titel „Nicht empfangene Nachrichten“- Überprüfen Sie, ob beide Apps die WCSession aktiviert haben
- Überprüfen Sie
isReachablebevor Nachrichten gesendet werden - Für eine garantierte Zustellung verwenden Sie
transferUserInfoanstattsendMessage - Stellen Sie sicher, dass die Listener vorher registriert sind, bevor das andere Gerät Nachrichten sendet
”Sitzung nicht aktiviert”-Fehler
Sitzung nicht aktiviert- Aufrufen
WatchConnector.shared.activate()frühzeitig im App-Lifecycle - Bei iOS aktiviert sich der Plugin automatisch - stellen Sie sicher, dass das Plugin importiert ist
- Überprüfen Sie, ob die WatchConnectivity-Fähigkeit zum iOS-Ziel hinzugefügt wurde
Build-Fehler mit CapgoWatchSDK
Sitzung nicht aktiviert- Stellen Sie sicher, dass das Paket zur Wachszieldatei hinzugefügt istnicht Zielgerät iOS
- Ordner für den Clean-Build löschen: Produkt → Ordner für Clean-Build löschen (Cmd + Shift + K)
- Paket-Caches zurücksetzen: Datei → Pakete → Paket-Caches zurücksetzen
Simulator-Probleme
Abschnitt mit dem Titel „Simulator-Probleme“- Simulatoren zurücksetzen: Gerät → Alle Inhalte und Einstellungen löschen
- Stellen Sie sicher, dass iOS- und watchOS-Simulator ein kompatibles Paar sind
- Beide Simulatoren 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 jede Methode verwenden
- Beispiel-App - Vollständiges funktionierendes Beispiel
Weitermachen von der Erstellung einer watchOS-App
Abschnitt mit dem Titel „Weitermachen von der Erstellung einer watchOS-App”Wenn Sie __CAPGO_KEEP_0__ verwenden Erstellung einer watchOS-App 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.