SideStore est la seule voie gratuite viable pour un appareil qui n'est pas
toujours sur le même réseau qu'un ordinateur : contrairement à AltStore, il
renouvelle la signature depuis l'appareil, sans AltServer ni réseau local.
Remplace la mention d'une ligne par la procédure complète : fichier de pairage
généré une fois depuis un ordinateur, installation de SideStore, tunnel StosVPN
(sans lequel le renouvellement échoue), import de l'IPA. Rappelle les limites
qui subsistent avec un Apple ID gratuit (3 apps, 10 App IDs par semaine).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WoXgHivbAphDk9ArgKDg8Q
Premier run du workflow Build iOS : toute la chaîne passe (génération du
projet Xcode, Info.plist, CocoaPods, icônes), mais la compilation Swift
échoue sur volume_controller 3.4.4, tiré transitivement par media_kit_video :
Cannot find type 'FlutterSceneLifeCycleDelegate' in scope
Value of type 'any FlutterPluginRegistrar' has no member 'addSceneDelegate'
Ces API sont apparues dans Flutter 3.38. volume_controller les utilise depuis
la 3.4.2 sans relever sa contrainte `flutter:` (toujours >=3.0.0), si bien que
pub la sélectionne sur le Flutter 3.35.3 des workflows. La 3.4.1 est la
dernière version sans ces appels — vérifié en inspectant les sources iOS des
versions 3.4.0 à 3.4.4.
Le côté Android du plugin n'utilise pas ces API, ce qui explique que seul le
build iOS soit touché. Un balayage des autres plugins à code natif iOS du
projet ne remonte que screen_brightness_ios (2.1.3+), absent du graphe depuis
que media_kit_video 1.3.x ne dépend plus que de screen_brightness_android.
Ajoute par ailleurs au guide iOS la marche à suivre pour un appareil qui n'est
pas toujours sur le même réseau que l'ordinateur (SideStore, compte payant).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WoXgHivbAphDk9ArgKDg8Q
Le projet était Android-only : le dossier ios/ avait été supprimé et aucune
cible Apple n'existait. Le code Dart, lui, est resté portable (aucun appel
spécifique à Android) et media_kit_libs_video embarque déjà libmpv pour iOS.
- scripts/prepare_ios.sh régénère le projet Xcode via `flutter create` puis
applique les réglages nécessaires à une app IPTV : exception App Transport
Security (les serveurs Xtream sont en http:// simple), audio en arrière-plan,
orientations paysage et 4 sens sur iPad, autorisation réseau local, cible
iOS 13 exigée par media_kit et bundle id aligné sur l'applicationId Android.
Le script est idempotent et respecte un dossier ios/ déjà versionné.
- Nouveau workflow Build iOS : runner macOS, build --no-codesign, empaquetage
en IPA non signé publié sur la Release de la version, à côté de l'APK.
Pas de déclenchement sur les PR, un runner macOS coûtant 10x en minutes.
- IOS_GUIDE.md documente les voies d'installation hors App Store (AltStore /
SideStore, Sideloadly, compte développeur, TestFlight) et leurs limites.
- flutter_launcher_icons : image_path pointait sur app-icon.png, absent du
dépôt ; correction vers le logo existant et ajout de la génération iOS.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WoXgHivbAphDk9ArgKDg8Q