# 📱 Guide de Test iOS - Geosector App ## ⚠️ Prérequis Importants ### Matériel Requis - **Mac** avec macOS 10.15 (Catalina) ou plus récent - **iPhone** avec iOS 12.0 ou plus récent - **Câble Lightning/USB-C** pour la connexion - **Apple Developer Account** (gratuit pour tests locaux) - **Xcode** 14.0 ou plus récent ### ❌ Limitations Linux/Windows **IMPORTANT** : Le développement iOS nécessite obligatoirement un Mac. - Pas de compilation iOS native sur Linux/Windows - Solutions alternatives limitées (voir section "Alternatives") --- ## 🍎 Configuration sur Mac ### 1️⃣ Installation des Outils #### Installer Xcode ```bash # Via App Store ou ligne de commande xcode-select --install # Accepter la licence Xcode sudo xcodebuild -license accept ``` #### Vérifier Flutter pour iOS ```bash # Vérifier la configuration iOS flutter doctor # Résoudre les problèmes iOS si nécessaire flutter doctor --verbose ``` #### Installer CocoaPods ```bash # CocoaPods est nécessaire pour les dépendances iOS sudo gem install cocoapods pod setup ``` ### 2️⃣ Configuration du Projet #### Ouvrir le projet iOS dans Xcode ```bash # Depuis le dossier du projet Flutter cd ios open Runner.xcworkspace ``` #### Configuration dans Xcode 1. **Sélectionner l'équipe de développement** : - Runner → Signing & Capabilities - Team : Sélectionner votre Apple ID - Bundle Identifier : `com.votredomaine.geosector` 2. **Configurer le déploiement** : - Deployment Info → iOS 12.0 minimum - Device Orientation : Portrait + Landscape --- ## 📲 Configuration de l'iPhone ### 1️⃣ Mode Développeur (iOS 16+) #### Activer le Mode Développeur ``` Réglages → Confidentialité et sécurité → Mode développeur → Activer ``` **Note** : Le téléphone redémarrera ### 2️⃣ Trust Computer 1. Brancher l'iPhone au Mac 2. **Sur l'iPhone** : "Faire confiance à cet ordinateur" → Faire confiance 3. Entrer le code de déverrouillage --- ## 🚀 Lancer l'Application ### Test via USB #### Vérifier la connexion ```bash # Lister les appareils disponibles flutter devices # Devrait afficher quelque chose comme : # iPhone de Pierre (mobile) • 00008110-001234567890ABCD • ios • iOS 17.2 ``` #### Lancer en mode Debug ```bash # Lancer sur l'iPhone connecté flutter run # Ou spécifier l'appareil flutter run -d [DEVICE_ID] ``` #### Lancer en mode Release ```bash # Performance optimale flutter run --release # Avec l'ID de l'appareil flutter run -d [DEVICE_ID] --release ``` ### Test via WiFi (Xcode 9+) #### Configuration WiFi 1. **iPhone et Mac** sur le même réseau WiFi 2. Dans **Xcode** : Window → Devices and Simulators 3. Sélectionner l'iPhone → Cocher "Connect via network" 4. Débrancher le câble USB #### Lancer via WiFi ```bash # L'appareil reste visible dans flutter devices flutter run -d [DEVICE_ID] ``` --- ## 🛠️ Build et Installation ### Créer l'Archive iOS #### Build pour App Store Connect ```bash # Nettoyer le projet flutter clean cd ios && pod install && cd .. # Build release flutter build ios --release # Ou avec obfuscation flutter build ios --release --obfuscate --split-debug-info=debug_info ``` #### Archive dans Xcode 1. Ouvrir `ios/Runner.xcworkspace` dans Xcode 2. Product → Scheme → Runner 3. Product → Destination → Any iOS Device 4. Product → Archive 5. Distribute App → Ad Hoc ou App Store ### Installation via TestFlight #### Configuration TestFlight 1. Upload l'archive vers **App Store Connect** 2. Ajouter les testeurs (emails) 3. Les testeurs reçoivent une invitation #### Installation sur iPhone 1. Installer l'app **TestFlight** depuis l'App Store 2. Accepter l'invitation (via email) 3. Installer l'app Geosector depuis TestFlight --- ## 📱 Simulateur iOS ### Lancer sur Simulateur ```bash # Lister les simulateurs disponibles flutter emulators # Lancer un simulateur flutter emulators --launch apple_ios_simulator # Ou ouvrir via Xcode open -a Simulator # Lancer l'app sur le simulateur flutter run ``` ### Simulateurs Recommandés - iPhone 15 Pro (dernier modèle) - iPhone SE (petit écran) - iPad Pro (tablette) --- ## 🔧 Commandes Utiles iOS ### Gestion des Certificats ```bash # Vérifier les certificats security find-identity -p codesigning -v # Nettoyer le cache DerivedData rm -rf ~/Library/Developer/Xcode/DerivedData ``` ### Pods et Dépendances ```bash # Mettre à jour les pods cd ios pod update pod install --repo-update # Nettoyer les pods pod deintegrate pod install ``` ### Logs et Debug ```bash # Voir les logs de l'iPhone flutter logs # Console Xcode pour logs détaillés # Xcode → Window → Devices and Simulators → View Device Logs # Logs système iOS xcrun simctl spawn booted log stream --level debug ``` --- ## 🐛 Résolution de Problèmes ### Erreur "Could not find Developer Disk Image" ```bash # Mettre à jour Xcode pour supporter la version iOS # Ou télécharger les Developer Disk Images ``` ### Erreur de Signature ```bash # Dans Xcode # Runner → Build Settings → Code Signing Identity → Apple Development # Runner → Signing & Capabilities → Automatically manage signing ``` ### Erreur CocoaPods ```bash cd ios pod cache clean --all rm -rf Pods rm Podfile.lock pod install ``` ### Application Non Fiable ``` iPhone → Réglages → Général → VPN et gestion d'appareils → App du développeur → Faire confiance ``` --- ## 🎯 Tests Spécifiques iOS ### Vérifications Visuelles - [ ] **Safe Area** : Respect des encoches (notch) - [ ] **Gestes iOS** : Swipe pour retour arrière - [ ] **Dark Mode** : Adaptation au thème système - [ ] **Dynamic Type** : Respect des tailles de texte système ### Permissions iOS - [ ] **Localisation** : Demande d'autorisation - [ ] **Notifications** : Permission push (si applicable) - [ ] **Caméra** : Accès pour scan (si applicable) ### Performance - [ ] **Démarrage** : Temps de lancement < 2s - [ ] **Animations** : 60 FPS constant - [ ] **Mémoire** : Pas de fuites (Instruments) - [ ] **Batterie** : Consommation raisonnable --- ## 🔄 Alternatives sans Mac ### 1. Codemagic CI/CD ```yaml # codemagic.yaml workflows: ios-workflow: name: iOS Build environment: xcode: latest scripts: - flutter build ios --release ``` ### 2. GitHub Actions ```yaml # .github/workflows/ios.yml runs-on: macos-latest steps: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v2 - run: flutter build ios --release --no-codesign ``` ### 3. Services Cloud - **MacinCloud** : Location de Mac virtuel - **MacStadium** : Mac en cloud - **AWS EC2 Mac** : Instances Mac sur AWS ### 4. Hackintosh (Non Recommandé) ⚠️ **Risques** : - Violation des conditions Apple - Instabilité système - Pas de support officiel --- ## 📋 Checklist Pré-Release iOS ### Configuration - [ ] Bundle ID unique configuré - [ ] Icônes de l'app (toutes tailles) - [ ] Launch Screen configuré - [ ] Info.plist à jour - [ ] Permissions déclarées ### Tests - [ ] Test sur iPhone réel - [ ] Test sur iPad (si supporté) - [ ] Test iOS minimum (12.0) - [ ] Test iOS récent (17.x) - [ ] Test mode avion ### App Store - [ ] Screenshots (toutes tailles) - [ ] Description de l'app - [ ] Mots-clés optimisés - [ ] Catégorie appropriée - [ ] Politique de confidentialité --- ## 💡 Tips iOS 1. **Provisioning Profile** : Renouveler tous les ans 2. **TestFlight** : Builds expirent après 90 jours 3. **App Store Review** : Prévoir 24-48h de délai 4. **Crash Reports** : Utiliser Crashlytics ou Sentry 5. **Push Notifications** : Nécessite certificat APNS --- ## 📊 Commandes Rapides ```bash # Session de test typique sur Mac flutter clean cd ios && pod install && cd .. flutter devices flutter run -d [iPhone_ID] # Build pour distribution flutter build ios --release open ios/Runner.xcworkspace # Product → Archive dans Xcode ``` --- ## 🆘 Support - **Documentation Flutter iOS** : https://flutter.dev/docs/deployment/ios - **Apple Developer** : https://developer.apple.com - **Forums Flutter** : https://github.com/flutter/flutter/issues --- *Guide créé pour Geosector v3.0.6 - Flutter 3.32+ - iOS 12.0+* **Note importante** : Ce guide nécessite un Mac pour la compilation et le déploiement iOS. Pour tester depuis Linux/Windows, utilisez les services cloud ou CI/CD mentionnés.