# 📱 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.