Créer une application watchOS
Copiez un prompt de configuration avec les étapes d'installation et le guide Markdown complet pour ce plug-in.
Ce guide vous guide à travers la création d'une watchOS complémentaire à partir de zéro, y compris la configuration du projet dans Xcode, l'intégration de l'API CapgoWatchSDK et la création d'une application de montre fonctionnelle avec SwiftUI.
Pour OS Wear, utilisez Créer une application OS Wear au lieu de cela.
Prerequisites
Section intitulée « Prérequis »Avant de commencer, assurez-vous d'avoir :
- Xcode 15 ou une version ultérieure (télécharger depuis l'App Store Mac)
- macOS Sonoma ou une version ultérieure (pour la dernière version de watchOS SDK)
- Un projet iOS existant Capacitor (lancer
npx cap add iossi vous n'avez pas - Un compte Apple Developer (un compte gratuit fonctionne pour le développement)
Structure de Projet
Vue d'ensemble de la structure du projetAprès avoir terminé ce guide, votre projet aura cette structure :
Répertoireios/
RépertoireApp/
RépertoireApp/ (votre application iOS principale)
- …
- App.xcodeproj
- App.xcworkspace (utilisez celui-ci pour ouvrir le projet)
- Podfile
RépertoireMonWatch/ (nouvelle application d'horloge)
RépertoireMonWatch/ (source de l'application d'horloge)
- MonWatchApp.swift
- Voir le fichier ContentView.swift
RépertoireAssets.xcassets/
- …
- MyWatch.xcodeproj
Étape 1 : Ouvrez votre projet iOS dans Xcode
Section intitulée « Étape 1 : Ouvrez votre projet iOS dans Xcode »- Naviguez vers le dossier de votre projet Capacitor
ios/Appdossier - Ouvrez
App.xcworkspacepas.xcodeprojdouble-cliquez dessus - Attendez que Xcode indexe le projet
Étape 2 : Ajouter une cible watchOS
Étape 2 : Ajouter une cible watchOS-
Allez dans Xcode Dans Xcode, allez à
-
Fichier → Nouveau → Cible…
- Select Sélectionnez barre de navigation en haut
- watchOS Choisissez
- Application Suivant
-
Configurez votre application horlogère :
- Nom du produit:
MyWatch(ou votre nom préféré) - Équipe: Sélectionnez votre équipe de développeurs Apple
- Identifiant de l'organisation: Should match your iOS app (e.g.,
app.capgo) - Identifiant de l'application: Sera généré automatiquement (par exemple,
app.capgo.myapp.watchkitapp) - Langue: Swift
- Interface Utilisateur: SwiftUI
- Type d'Application de Montre: App (not App for Existing iOS App)
- Désactiver Inclure la Scene de Notification (sauf si vous en avez besoin)
- Désactiver Inclure la Complication (sauf si vous en avez besoin)
- Nom du produit:
-
Cliquez Terminer
-
When prompted “Activate ‘MyWatch’ scheme?”, cliquez sur Activer
Étape 3 : Paramètres de l'application de montre
Zone intitulée « Étape 3 : Paramètres de l'application de montre »-
Dans le navigateur de projet (barre latérale gauche), sélectionnez votre projet (l'icône bleue en haut)
-
Sélectionnez votre cible de montre (par exemple, « MyWatch ») de la liste des cibles
-
Allez dans la Général tab:
- Identifiant de l'applicationLe nom affiché sous l'icône de l'application (par exemple, “Mon application”)
- Identifiant de Bundle: Devrait se terminer par
.watchkitapp - Version: Correspond à votre version d'application iOS
- Build: Match your iOS app build number
-
Allez à Onglet : Signature et Capacités tab :
- Activer Gérer automatiquement la signature
- Sélectionnez votre Équipe
- Xcode créera automatiquement les profils de provisionnement.
-
Configurez Informations de déploiement:
- Informations de déploiementMinimums de déploiement
Étape 4 : Ajoutez CapgoWatchSDK via Gestionnaire de Packages Swift
Étape 4 : Ajoutez CapgoWatchSDK via le Gestionnaire de packages SwiftLe CapgoWatchSDK fournit un module prêt à l'emploi WatchConnector classe pour la communication.
-
Allez dans Xcode Fichier → Ajouter les dépendances de package…
-
Dans le champ de recherche, saisissez :
https://github.com/Cap-go/capacitor-watch.git -
Appuyez sur Entrée et attendez que Xcode récupère le package
-
Configurer le package :
- Règle de dépendance: « Jusqu'à la prochaine version majeure » avec « 8.0.0 »
- Cliquez Ajouter un package
-
Choisissez les produits à ajouter :
- IMPORTANT: Sélectionnez uniquement
CapgoWatchSDK - Vérifiez qu'il est ajouté à votre cible watch (exemple : “MonWatch”), pas l’application iOS
- Cliquer Ajouter le package
- IMPORTANT: Sélectionnez uniquement
Étape 5 : Mettre en œuvre l'application de montre
Étape 5 : Implémenter l'Application d'HorlogeNow let’s create the watch app code. Replace the auto-generated files with the following:
Créez l'Entrée d'Application
Section intitulée « 5.1 Créez l'entrée d'application »Modifier 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 Créez la vue principale
Section intitulée « 5.2 Créez la vue principale »Modifier 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()}Étape 6 : Configurez l'application iOS pour WatchConnectivity
Section intitulée « Étape 6 : Configurez l'application iOS pour WatchConnectivity »Votre application iOS nécessite également la capacité WatchConnectivity.
-
Dans le navigateur de projet, sélectionnez votre projet
-
Sélectionnez votre Cible d'application iOS pas la cible de montre
-
Allez à Case de signature et de capacités Case
-
Cliquez + Capacité
-
Recherchez et ajoutez WatchConnectivity (si disponible) ou elle peut être ajoutée automatiquement
-
Le plugin Capacitor gère automatiquement le côté iOS, mais assurez-vous que votre fichier Info.plist contient :
<key>WKCompanionAppBundleIdentifier</key><string>app.capgo.myapp.watchkitapp</string>
Étape 7 : Construire et Exécuter
Section intitulée « Étape 7 : Construire et Exécuter »Exécuter sur le Simulateur
Section intitulée « Exécuter sur le Simulateur »-
Choisissez votre schéma d'horloge à partir du sélecteur de schéma (haut de la fenêtre Xcode)
-
Choisissez un simulateur d'horloge Apple :
- Cliquez sur le sélecteur de périphérique à côté du schéma
- Choisissez un simulateur d'horloge Apple (par exemple, « Apple Watch Series 9 (45mm) »)
-
Cliquez sur Run Construire et exécuter
Cmd + R -
Le simulateur iOS lancera avec à la fois un iPhone et un Apple Watch.
Exécutez sur appareil physique
Section intitulée « Exécutez sur appareil physique »-
Connectez votre iPhone via USB
-
Assurez-vous que votre montre Apple est pairée avec cet iPhone
-
Sélectionnez votre schéma de montre
-
Sélectionnez votre montre Apple physique dans la liste des appareils
-
Cliquez Démarrez
-
First time: You may need to trust your computer on both devices
Étape 8 : Tester la communication
Étape 8 : Tester la communicationDe l'iPhone (Capacitor) à l'Apple Watch
De l'iPhone (Capacitor) à l'Apple WatchDans votre application Capacitor :
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!' } });}Sous-titre : « De la montre à l'iPhone »
L'application de montre utiliseSous-titre : « De la montre à l'iPhone » 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)")}Manipuler les messages sur iPhone
Section intitulée « Manipuler les messages sur iPhone »// 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'] } });});Avancé : Délégué personnalisé pour plus de contrôle
Section intitulée « Avancé : Délégué personnalisé pour plus de contrôle »Si vous avez besoin de plus de contrôle, implémentez 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()Aide au dépannage
Section intitulée « Aide au dépannage »Application de montre ne s'affiche pas sur la montre
L'application Watch ne s'affiche pas sur le montre- Ensure bundle IDs are correctly related (watch app bundle ID should be iOS app bundle ID +
.watchkitapp) - Vérifiez que les deux applications sont signées avec le même équipe
- Sur appareil physique : Ouvrez l'application Watch sur iPhone → Mon Watch → défilez pour trouver votre application → activez-le
Messages qui ne sont pas reçus
Sous-section intitulée « Messages qui ne sont pas reçus »- Vérifiez que les deux applications ont WCSession activé
- Vérifiez
isReachableavant d'envoyer des messages - Pour une livraison garantie, utilisez
transferUserInfoau lieu desendMessage - Assurez-vous que les écouteurs sont enregistrés avant que l'autre appareil n'envoie des messages
Erreur « Session Non Activée »
Sous-section intitulée « Erreur « Session Non Activée » »- Appeler
WatchConnector.shared.activate()tôt dans le cycle de l'application - Sur iOS, le plugin s'active automatiquement - assurez-vous que le plugin est importé
- Vérifiez que la capacité WatchConnectivity est ajoutée à la cible iOS
Erreurs de construction avec CapgoWatchSDK
Section intitulée « Erreurs de construction avec CapgoWatchSDK »- Assurez-vous que le package est ajouté à la cible de montreet non à la cible iOS
- Nettoyer le dossier de construction : Produit → Nettoyer le dossier de construction (Cmd + Maj + K)
- Réinitialiser les caches de packages : Fichier → Packages → Réinitialiser les caches de packages
Problèmes de simulateur
Section intitulée « Problèmes de simulateur »- Réinitialiser les simulateurs : Appareil → Effacer tout contenu et paramètres
- S'assurer que les simulateurs iOS et watchOS sont des paires compatibles
- Both simulators need to be running for communication to work
Étapes suivantes
Section intitulée « Étapes suivantes »- Création d'une application Wear OS pour des montres Android
- Référence API - Documentation complète de API
- Modèles de communication - Utiliser chaque méthode quand il faut
- Example App - Exemple d'application fonctionnel complet
Continuez depuis la création d'une application watchOS
Section intitulée “Continuez de Créer une application watchOS”Créer une application watchOS Créer une application watchOS Utiliser @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-watch Utilisation de @capgo/capacitor-watch pour la capacité native dans l'utilisation de @capgo/capacitor-watch, Répertoire du plugin Capgo pour le flux de travail du produit dans le répertoire du plugin Capgo Plugins Capacitor par Capgo pour le détail d'implémentation dans Plugins Capacitor par Capgo, Ajouter ou mettre à jour les plugins pour le détail d'implémentation dans Ajouter ou mettre à jour les plugins, et Alternatives de plugins d'entreprise Ionic Pour le flux de travail du produit dans les plugins d'entreprise Ionic.