# iOS

Flutter + CocoaPods. Нативка через плагины — зависимости смотри в `Podfile` / `Podfile.lock`.

## Окружение

Полный Xcode (не только CLT). После апдейта Xcode:

```bash
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
```

Нет нужного iOS в сборке — Xcode → Settings → Platforms, докачать runtime. `flutter doctor -v` для быстрой проверки toolchain.

## Сборка из репозитория

Из корня (важно для `Generated.xcconfig`):

```bash
flutter pub get
cd ios && pod install && cd ..
```

Открывать **`Runner.xcworkspace`**, не `Runner.xcodeproj`.

Ключ **Yandex MapKit**: в `Info.plist` — `YandexMapKitApiKey` = `$(YANDEX_MAPKIT_API_KEY)`. Значение задаётся в `ios/Flutter/Debug.xcconfig`, `Release.xcconfig`, `Profile.xcconfig` (в конце файла; опционально перед этим `#include? "Secrets.xcconfig"` — см. `Secrets.xcconfig.example`). В `AppDelegate.swift` до `super.application` вызываются `YMKMapKit.setLocale` / `setApiKey` из plist — иначе SDK падает при регистрации плагина.

## Подпись

Runner → Signing & Capabilities, свой Team. Bundle id: `com.sparkit.beHappy` — должен совпадать с App ID в developer portal под TestFlight / App Store.

## Артефакты

```bash
flutter build ipa
```

`.ipa` — в `build/ios/ipa/` (точный путь Flutter печатает в конце).

Альтернатива: Xcode → Archive → Distribute. `ExportOptions.plist` в репу не коммитим.

## Симулятор

```bash
flutter devices
flutter run -d <device_id>
```

У `mobile_scanner` 5.x в Pods тянется Google ML Kit; на симуляторах Apple Silicon под свежим iOS Xcode часто ругается на arm64 и криво матчит destination. Если `flutter run` на симе отвалился — собери на **физическом устройстве** или проверь обновления плагина / обходы в `Podfile` под твою связку Xcode + runtime.

## Ссылки

[Flutter: iOS deployment](https://docs.flutter.dev/deployment/ios)
