feat(ios): support iPhone/iPad avec build d'un IPA sideloadable

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
This commit is contained in:
Claude committed 2026-09-09 16:28:02 +00:00
1 parent 186f9f89f9
commit 26bf240b76
7 files changed
+356 -5

No files matched your search

+6 -3
View File
@@ -1,5 +1,5 @@
name: xtremobile
description: High-performance IPTV Android Application with Xtream Codes API
description: High-performance IPTV application (Android, iPhone, iPad) with Xtream Codes API
publish_to: 'none'
version: 1.7.1+15
@@ -70,9 +70,12 @@ dev_dependencies:
flutter_launcher_icons:
android: true
image_path: "assets/images/app-icon.png"
ios: true
image_path: "assets/images/logo_xtremflow.png"
adaptive_icon_background: "#1a1a2e"
adaptive_icon_foreground: "assets/images/app-icon.png"
adaptive_icon_foreground: "assets/images/logo_xtremflow.png"
# iOS refuse une icône comportant un canal alpha.
remove_alpha_ios: true
flutter:
uses-material-design: true