Création d'une application watchOS
Copiez un prompt de configuration avec les étapes d'installation et le guide Markdown complet pour ce plugin.
Ce guide vous guide à travers la création d'une application de compagnon watchOS à 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 watch fonctionnelle avec SwiftUI.
Prérequis
Section intitulée “Prérequis”Avant de commencer, assurez-vous d'avoir :
- Xcode 15 ou ultérieur (télécharger depuis l'App Store Mac)
- macOS Sonoma ou ultérieur (pour le dernier watchOS SDK)
- Un projet iOS existant Capacitor (exécutez
npx cap add iosSi vous n'avez pas encore un compte Apple Developer - Compte Apple Developer (compte gratuit fonctionne pour le développement) Vue d'ensemble de la structure du projet
Section intitulée « Vue d'ensemble de la structure du projet »
Après avoir terminé ce guide, votre projet aura cette structure :Répertoire
ios/Répertoire
App/Répertoire
App/__CAPGO_KEEP_0__ (votre application iOS principale)
- …
- App.xcodeproj
- App.xcworkspace (utilisez cela pour ouvrir le projet)
- Podfile
RépertoireMyWatch/ (nouvelle application horlogère)
RépertoireMyWatch/ (source de l'application horlogère)
- MyWatchApp.swift
- 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 - Ouvrir
App.xcworkspace(pas.xcodeproj) en double-cliquant dessus - Attendez que Xcode indexe le projet
Étape 2 : Ajoutez une cible watchOS
Section intitulée “Étape 2 : Ajoutez une cible watchOS”-
Dans Xcode, allez à Fichier → Nouveau → Cible…
-
Dans le choix de modèle :
- Sélectionnez watchOS barre de navigation en haut
- Choisissez Application
- Cliquez Suivant
-
Configurez votre application pour montre :
- Nom du produit:
MyWatch(ou votre nom préféré) - Équipe: Sélectionnez votre équipe de développeur Apple
- Identifiant de l'organisation: Doit correspondre à votre application iOS (par exemple,
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 Watch: Application (pas Application pour l'application iOS existante)
- Désactiver Inclure la scène de notification (sauf si vous en avez besoin)
- Désactiver Inclure Complication (sauf si vous en avez besoin)
- Nom du produit:
-
Cliquez Terminer
-
Lorsque vous êtes invité à « Activer le schéma ‘MyWatch’ ? », cliquez Activer
Étape 3 : Configurer les paramètres de l’application horlogère
Section intitulée « Étape 3 : Configurer les paramètres de l’application horlogère »-
Dans le navigateur de projet (barre latérale gauche), sélectionnez votre projet (l’icône bleue en haut)
-
Sélectionnez votre cible horlogère (par exemple, « MyWatch ») de la liste des cibles
-
Allez à la Général tab:
- Nom d'affichage: Le nom affiché sous l'icône de l'application (par exemple, « Mon Application »)
- Identifiant de l'application: Doit se terminer par
.watchkitapp - Version: Correspond à la version de votre application iOS
- Numéro de construction: Correspond à votre numéro de construction de l'application iOS
-
Allez à Signature et capacités tab:
- Activer Gérer automatiquement la signature
- Sélectionnez votre Équipe
- Xcode créera automatiquement les profils de provisionnement
-
Définir Informations de déploiement:
- Déploiements minimums: watchOS 9.0 ou ultérieur
Étape 4 : Ajouter CapgoWatchSDK via Swift Package Manager
Section intitulée “Étape 4 : Ajouter CapgoWatchSDK via Swift Package Manager”Le CapgoWatchSDK fournit un module prêt à l'emploi WatchConnector classe pour la communication.
-
Dans Xcode, allez à Fichier → Ajouter des 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
-
Configurez 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 - Assurez-vous qu'il est ajouté à votre cible d'horloge (par exemple, « MonHorloge »), et non l'application iOS
- Cliquez Ajouter le package
- IMPORTANT: Sélectionnez uniquement
Étape 5 : Mettre en œuvre l'application de montre
Section intitulée « Étape 5 : Mettre en œuvre l'application de montre »Créons maintenant l'application de montre code. Remplacez les fichiers générés automatiquement par les suivants :
5.1 Créer l'entrée de l'application
Section intitulée « 5.1 Créer l'entrée de l'application »Éditer 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éer la vue principale
Section intitulée « 5.2 Créer la vue principale »Éditer 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 : Configurer l'application iOS pour WatchConnectivity
Étape 6 : Configurez l'application iOS pour WatchConnectivityVotre application iOS nécessite également la capacité WatchConnectivity.
-
Dans le navigateur de projet, sélectionnez votre projet
-
Sélectionnez votre Cible de l'application iOS (pas la cible de l'horloge)
-
Allez à Signature et capacités onglet
-
Cliquez sur + Capacité
-
Recherchez et ajoutez Connectivité de montre (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”-
Sélectionnez votre schéma de montre à partir du sélecteur de schéma (en haut de la fenêtre Xcode)
-
Choisissez un simulateur de montre :
- Cliquez sur le sélecteur de dispositif à côté du schéma
- Sélectionnez un simulateur d'Apple Watch (par exemple, « Apple Watch Series 9 (45mm) »)
-
Cliquez sur le bouton Run ou appuyez sur
Cmd + R -
L'émulateur iOS lancera avec les iPhone et Apple Watch
Exécuter sur appareil physique
Section intitulée “Exécuter sur appareil physique”-
Connectez votre iPhone via USB
-
Vérifiez que votre Apple Watch est pairé avec cet iPhone
-
Sélectionnez votre schéma d'horloge
-
Sélectionnez votre Apple Watch physique dans la liste des appareils
-
Cliquez Run
-
Première fois : Vous devrez peut-être faire confiance à votre ordinateur sur les deux appareils
Étape 8 : Tester la communication
Section intitulée « Étape 8 : Tester la communication »De l'iPhone (Capacitor) à la montre
Section intitulée « De l'iPhone (Capacitor) à la montre »Dans 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!' } });}De montre à iPhone
Section intitulée “De montre à iPhone”L'application de montre utilise 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)")}Gérer les messages sur iPhone
Section intitulée “Gérer 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élegué personnalisé pour plus de contrôle
Section intitulée “Avancé : Délegué 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()Application de montre ne s'affiche pas sur la montre
Section intitulée « Application de montre ne s'affiche pas sur la montre »- Assurez-vous que les identifiants de bundle sont correctement liés (l'identifiant de bundle de l'application de montre doit être l'identifiant de bundle de l'application iOS +
.watchkitapp) - Vérifiez que les deux applications sont signées avec le même équipe
- Sur appareil physique : Ouvrez l'application de montre sur l'iPhone → Mon montre → défilez pour trouver votre application → activez
Messages ne sont pas reçus
Section intitulée « Messages 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 soient 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 vie 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
Sous-section intitulée « Erreurs de construction avec CapgoWatchSDK »- Assurez-vous que le package est ajouté à la cible de montrepas cible iOS
- Nettoyer le dossier de build : Produit → Nettoyer le dossier de build (Cmd + Maj + K)
- Réinitialiser les caches de packages : Écran « Problèmes de simulateur »
Réinitialiser les simulateurs :
Appareil → Effacer tout le contenu et les paramètres- Assurer que les simulateurs iOS et watchOS sont des paires compatibles Les deux simulateurs doivent être en cours d'exécution pour que la communication fonctionne
- Les deux simulateurs doivent être en cours d'exécution pour que la communication fonctionne
- Les deux simulateurs doivent être en cours d'exécution pour que la communication fonctionne
Étapes suivantes
Section intitulée « Étapes suivantes »- API Reference - Documentation complète de API
- Modèles de communication - Utiliser chaque méthode
- Application d'exemple - Exemple de travail fonctionnel
Continuez de la création d'une application watchOS
Section intitulée « Continuez de la création d'une application watchOS »Si vous utilisez Création d'une application watchOS planifier le travail de plugin natif, le connecter avec En utilisant @capgo/capacitor-watch pour la capacité native dans En utilisant @capgo/capacitor-watch, __Répertoire de plugin Capgo pour le flux de travail du produit dans __Répertoire de 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 Plugin Entreprise Ionic pour le flux de travail du produit dans Alternatives de Plugin Entreprise Ionic.