Skip to content

Étape 28 — Build iOS (exception Mac) ​

Cette étape nécessite un Mac avec Xcode

Élèves sur Windows ou Linux : sautez cette étape. Xcode n'existe que sur macOS — il n'y a aucun contournement officiel.

Vous avez déjà votre app Android fonctionnelle depuis l'étape E27, passez directement à E29 (Adaptations UI mobile).

Temps estimé

Environ 1h30 (dont 30-45 min de premier téléchargement Xcode/CocoaPods/pods). Les fois suivantes : 5-10 min.

Pré-requis (à installer AVANT de commencer) ​

1. L'étape E27 terminée ​

Capacitor doit déjà être installé, capacitor.config.ts créé, src/plugins/axios.js doit pointer vers Vercel, et npm run build doit fonctionner. Cette étape ajoute uniquement la plateforme iOS au projet existant.

2. Xcode ​

Téléchargez depuis le Mac App Store (gratuit, ~10 Go). Lancez Xcode une première fois et acceptez la licence quand elle apparaît. Connectez-vous avec un compte Apple quelconque (gratuit).

3. Outils en ligne de commande Xcode ​

Dans un terminal :

bash
xcode-select --install

Si le message dit qu'ils sont déjà installés, parfait.

4. CocoaPods (PAS inclus avec Xcode 15+) ​

bash
# Méthode recommandée (pas de sudo)
brew install cocoapods

# Vérifier
pod --version    # → 1.15.0 ou supérieur

Si vous n'avez pas Homebrew, installez-le depuis brew.sh.

Sans CocoaPods, l'étape §1 (npx cap add ios) plantera

L'erreur ressemble à pod: command not found ou Unable to find a specification for.... Installez CocoaPods d'abord.

Tâches ​

1. Ajouter la plateforme iOS ​

bash
npx cap add ios

Cette commande :

  1. Crée le dossier ios/App/ contenant un projet Xcode complet
  2. Copie le contenu de dist/ dans ios/App/App/public/
  3. Lance pod install pour installer les dépendances natives (CocoaPods)

Premier pod install long

La première installation des pods télécharge ~500 Mo de spécifications CocoaPods. Comptez 5-10 minutes la première fois (très silencieux dans le terminal). Si vous voyez Setting up CocoaPods master repo, c'est normal, laissez tourner.

2. Ouvrir le projet dans Xcode ​

bash
npx cap open ios
# → ouvre ios/App/App.xcworkspace dans Xcode

Ouvrez bien .xcworkspace, PAS .xcodeproj

Si vous double-cliquez sur App.xcodeproj (généré par Xcode), CocoaPods ne sera pas chargé et l'app crashera au lancement. Toujours App.xcworkspace.

3. Lancer dans le simulateur iPhone ​

Dans Xcode :

  1. En haut, à côté du bouton Play, sélectionner un simulateur (par exemple iPhone 15 Pro)
  2. Cliquer sur Play (▶) ou faire Cmd + R
  3. Attendre que le simulateur démarre et que le build se termine

Premier build = 5-10 minutes

La compilation Swift + indexing prend du temps la première fois. N'interrompez pas Xcode même s'il semble figé. Les builds suivants prennent 10-30 secondes.

  1. L'app Pokédex apparaît et la liste se charge depuis Vercel

Pokédex sur iPhone 15 Pro Simulator

Recharger l'app après modification du code Vue

bash
npm run build && npx cap copy ios

Puis relancer dans Xcode (Cmd + R). Pas besoin de re-faire cap add ou pod install.

4. Synchroniser après ajout d'un plugin ​

Quand vous ajoutez un nouveau plugin Capacitor (par exemple @capacitor/camera), il faut faire :

bash
npm install @capacitor/camera
npx cap sync

cap sync = cap copy + mise à jour des dépendances natives (pods iOS, gradle Android).

Tests à effectuer ​

  • Le simulateur iPhone démarre sans erreur Xcode
  • L'app s'ouvre et affiche le titre "Pokédex"
  • La liste de Pokémon se charge (depuis Vercel, donc nécessite internet)
  • Les images des Pokémon s'affichent
  • La recherche par nom fonctionne
  • Vous pouvez cliquer sur un Pokémon pour voir sa fiche détail

Erreurs courantes ​

Message d'erreurCauseSolution
pod: command not foundCocoaPods absentbrew install cocoapods
xcode-select: error: tool 'xcodebuild' requires XcodeOutils ligne de commande mal pointéssudo xcode-select -s /Applications/Xcode.app/Contents/Developer
No such module 'Capacitor' au buildOuverture de .xcodeproj au lieu de .xcworkspaceFermer Xcode, ouvrir App.xcworkspace
Page blanche dans le simulateurBundle dist/ absent ou pas synchronisénpm run build && npx cap copy ios
signing requires a development teamPas de compte Apple configuréXcode → Signing & Capabilities → Team → choisir n'importe quel compte personnel (gratuit)

Pièges connus ​

iOS Simulator vs device physique

Le simulateur partage le réseau du Mac : localhost fonctionne. Sur un iPhone physique, localhost ne marchera pas — d'où l'intérêt d'utiliser l'API Vercel dès maintenant.

Cache WebView

Si vous modifiez le code et que vous ne voyez pas le changement dans le simulateur, faites Device → Erase All Content and Settings dans le menu Simulator. La WebView garde un cache agressif.

Commit

bash
git add -A
git commit -m "feat(mobile): ajout plateforme iOS via Capacitor"

Suite ​

L'app marche sur iOS et Android (vous avez les deux maintenant), mais l'interface ressemble encore à la version desktop sur les deux plateformes. Passez à l'étape 29 pour adapter le UI : bottom navigation, safe areas iOS (notch), status bar native.

Documentation pour les cours de développement web