From e1d87bb261f514d9dbb3b692565ae082dadb9a7e Mon Sep 17 00:00:00 2001 From: devthejo Date: Mon, 12 Jan 2026 22:54:20 +0100 Subject: [PATCH] chore(ios): fix script --- ios/AlerteSecours.xcodeproj/project.pbxproj | 74 +++- ios/AlerteSecours/Info.plist | 360 ++++++++++---------- scripts/ios-upload.sh | 35 +- 3 files changed, 275 insertions(+), 194 deletions(-) diff --git a/ios/AlerteSecours.xcodeproj/project.pbxproj b/ios/AlerteSecours.xcodeproj/project.pbxproj index d00877e..cfb1d57 100644 --- a/ios/AlerteSecours.xcodeproj/project.pbxproj +++ b/ios/AlerteSecours.xcodeproj/project.pbxproj @@ -197,9 +197,11 @@ 9E6F0A1338934BA5AD468D4B /* Fix Xcode 15 Bug */, 229987488EA44E69AA932D58 /* Fix Xcode 15 Bug */, A891237ADBD54747890A99FB /* Fix Xcode 15 Bug */, - B700EE07E2A24654A0953D3B /* Remove signature files (Xcode workaround) */, 9E272D599E42446BB8DFD8D0 /* Fix Xcode 15 Bug */, - CBAD4F53ADB04F499371D5DE /* Remove signature files (Xcode workaround) */, + 884372829D0E4436B7BC6F91 /* Fix Xcode 15 Bug */, + F778935A7C8642C4851AE054 /* Remove signature files (Xcode workaround) */, + A1D9EF7E0B4442DF8860F6A5 /* Fix Xcode 15 Bug */, + B6A277D5FA3848ECACDAF93C /* Remove signature files (Xcode workaround) */, ); buildRules = ( ); @@ -1066,6 +1068,74 @@ fi"; shellScript = " echo \"Remove signature files (Xcode workaround)\"; rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\"; + "; + }; + 884372829D0E4436B7BC6F91 /* Fix Xcode 15 Bug */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + name = "Fix Xcode 15 Bug"; + inputPaths = ( + ); + outputPaths = ( + ); + shellPath = /bin/sh; + shellScript = "if [ \"$XCODE_VERSION_MAJOR\" = \"1500\" ]; then + echo \"Remove signature files (Xcode 15 workaround)\" + find \"$BUILD_DIR/${CONFIGURATION}-iphoneos\" -name \"*.signature\" -type f | xargs -r rm +fi"; + }; + F778935A7C8642C4851AE054 /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + name = "Remove signature files (Xcode workaround)"; + inputPaths = ( + ); + outputPaths = ( + ); + shellPath = /bin/sh; + shellScript = " + echo \"Remove signature files (Xcode workaround)\"; + rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\"; + "; + }; + A1D9EF7E0B4442DF8860F6A5 /* Fix Xcode 15 Bug */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + name = "Fix Xcode 15 Bug"; + inputPaths = ( + ); + outputPaths = ( + ); + shellPath = /bin/sh; + shellScript = "if [ \"$XCODE_VERSION_MAJOR\" = \"1500\" ]; then + echo \"Remove signature files (Xcode 15 workaround)\" + find \"$BUILD_DIR/${CONFIGURATION}-iphoneos\" -name \"*.signature\" -type f | xargs -r rm +fi"; + }; + B6A277D5FA3848ECACDAF93C /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + name = "Remove signature files (Xcode workaround)"; + inputPaths = ( + ); + outputPaths = ( + ); + shellPath = /bin/sh; + shellScript = " + echo \"Remove signature files (Xcode workaround)\"; + rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\"; "; }; /* End PBXShellScriptBuildPhase section */ diff --git a/ios/AlerteSecours/Info.plist b/ios/AlerteSecours/Info.plist index 5e00dfc..4d14f70 100644 --- a/ios/AlerteSecours/Info.plist +++ b/ios/AlerteSecours/Info.plist @@ -1,183 +1,183 @@ - - BGTaskSchedulerPermittedIdentifiers - - com.transistorsoft - com.transistorsoft.fetch - com.transistorsoft.customtask - - CADisableMinimumFrameDurationOnPhone - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Alerte Secours - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.16.0 - CFBundleSignature - ???? - CFBundleURLTypes - - - CFBundleURLSchemes - - com.alertesecours.alertesecours - - CFBundleURLName - com.alertesecours.alertesecours - - - CFBundleURLSchemes - - exp+alerte-secours - - CFBundleURLName - com.alertesecours.alertesecours.expo - - - CFBundleVersion - 231 - ITSAppUsesNonExemptEncryption - - LSApplicationQueriesSchemes - - http - https - comgooglemaps - maps - waze - citymapper - uber - lyft - transit - truckmap - waze-na - yandexnavi - moovit - yandexmaps - kakaomap - szn-mapy - mapsme - osmand - gett - nmap - dgis - tel - telprompt - yandextaxi - tmap - osmandmaps - lftgpas - petalmaps - sygic - - LSMinimumSystemVersion - 12.0 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSExceptionDomains - - alertesecours.fr - - NSExceptionAllowsInsecureHTTPLoads - - NSExceptionMinimumTLSVersion - TLSv1.0 - NSExceptionRequiresForwardSecrecy - - NSIncludesSubdomains - - - localhost - - NSExceptionAllowsInsecureHTTPLoads - - NSIncludesSubdomains - - - sentry.io - - NSExceptionMinimumTLSVersion - TLSv1.0 - NSExceptionRequiresForwardSecrecy - - NSIncludesSubdomains - - - - - NSCameraUsageDescription - Alerte-Secours requiert l'accès à votre caméra pour vous permettre de prendre une photo de profil. Cette fonctionnalité est utilisée uniquement lors de la personnalisation de votre compte. - NSContactsUsageDescription - Alerte-Secours demande l'accès à vos contacts pour afficher les noms associés aux numéros de téléphone. Ces informations restent strictement sur votre appareil et ne sont jamais partagées ni transmises à des tiers. - NSFaceIDUsageDescription - Allow $(PRODUCT_NAME) to access your Face ID biometric data. - NSLocationAccuracyReduced - Alerte-Secours nécessite une localisation précise pour optimiser l'assistance aux personnes en détresse. Cette précision est essentielle pour localiser efficacement et rejoindre rapidement les personnes ayant besoin d'aide. - NSLocationAlwaysAndWhenInUseUsageDescription - Alerte-Secours nécessite la localisation en arrière-plan pour vous alerter en temps réel lorsqu'une personne à proximité a besoin d'aide urgente. Cette fonction est essentielle pour permettre une intervention rapide et efficace en cas d'urgence. - NSLocationAlwaysUsageDescription - [Alerte-Secours] Cette application nécessite l'accès à la localisation même en arrière-plan pour améliorer la sécurité et l'aide en cas d'urgence. - NSLocationWhenInUseUsageDescription - Alerte-Secours utilise votre localisation pour identifier et vous diriger vers les personnes nécessitant une assistance à proximité. Cette fonction est cruciale pour une intervention rapide et précise en cas d'urgence. - NSMicrophoneUsageDescription - Alerte-Secours requiert l'accès au microphone pour l'enregistrement de messages vocaux. Cette fonction permet une communication plus rapide et plus claire en situation d'urgence. - NSMotionUsageDescription - Alerte-Secours utilise la détection de mouvement pour optimiser la géolocalisation en arrière-plan, réduisant ainsi la consommation de batterie. Aucune donnée de mouvement n'est stockée ni transmise. - NSPhotoLibraryUsageDescription - Alerte-Secours demande l'accès à votre photothèque uniquement pour vous permettre de sélectionner une photo de profil. Cette fonctionnalité est utilisée exclusivement pour la personnalisation de votre compte. - NSRemoteNotificationUsageDescription - [Alerte-Secours] Cette application utilise les notifications pour pouvoir vous prévenir lorsque quelqu'un a besoin d'aide à proximité - NSUserNotificationUsageDescription - Alerte-Secours utilise les notifications pour vous informer immédiatement lorsqu'une personne à proximité nécessite une assistance urgente. Ces alertes sont essentielles pour une réponse rapide aux situations d'urgence. - UIBackgroundModes - - fetch - location - remote-notification - processing - - UILaunchStoryboardName - SplashScreen - UIRequiredDeviceCapabilities - - arm64 - - UIRequiresFullScreen - - UIStatusBarStyle - UIStatusBarStyleDefault - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIUserInterfaceStyle - Automatic - UIViewControllerBasedStatusBarAppearance - - - \ No newline at end of file + + BGTaskSchedulerPermittedIdentifiers + + com.transistorsoft + com.transistorsoft.fetch + com.transistorsoft.customtask + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Alerte Secours + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 202601121722 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + com.alertesecours.alertesecours + CFBundleURLSchemes + + com.alertesecours.alertesecours + + + + CFBundleURLName + com.alertesecours.alertesecours.expo + CFBundleURLSchemes + + exp+alerte-secours + + + + CFBundleVersion + 202601121722 + ITSAppUsesNonExemptEncryption + + LSApplicationQueriesSchemes + + http + https + comgooglemaps + maps + waze + citymapper + uber + lyft + transit + truckmap + waze-na + yandexnavi + moovit + yandexmaps + kakaomap + szn-mapy + mapsme + osmand + gett + nmap + dgis + tel + telprompt + yandextaxi + tmap + osmandmaps + lftgpas + petalmaps + sygic + + LSMinimumSystemVersion + 12.0 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSExceptionDomains + + alertesecours.fr + + NSExceptionAllowsInsecureHTTPLoads + + NSExceptionMinimumTLSVersion + TLSv1.0 + NSExceptionRequiresForwardSecrecy + + NSIncludesSubdomains + + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + NSIncludesSubdomains + + + sentry.io + + NSExceptionMinimumTLSVersion + TLSv1.0 + NSExceptionRequiresForwardSecrecy + + NSIncludesSubdomains + + + + + NSCameraUsageDescription + Alerte-Secours requiert l'accès à votre caméra pour vous permettre de prendre une photo de profil. Cette fonctionnalité est utilisée uniquement lors de la personnalisation de votre compte. + NSContactsUsageDescription + Alerte-Secours demande l'accès à vos contacts pour afficher les noms associés aux numéros de téléphone. Ces informations restent strictement sur votre appareil et ne sont jamais partagées ni transmises à des tiers. + NSFaceIDUsageDescription + Allow $(PRODUCT_NAME) to access your Face ID biometric data. + NSLocationAccuracyReduced + Alerte-Secours nécessite une localisation précise pour optimiser l'assistance aux personnes en détresse. Cette précision est essentielle pour localiser efficacement et rejoindre rapidement les personnes ayant besoin d'aide. + NSLocationAlwaysAndWhenInUseUsageDescription + Alerte-Secours nécessite la localisation en arrière-plan pour vous alerter en temps réel lorsqu'une personne à proximité a besoin d'aide urgente. Cette fonction est essentielle pour permettre une intervention rapide et efficace en cas d'urgence. + NSLocationAlwaysUsageDescription + [Alerte-Secours] Cette application nécessite l'accès à la localisation même en arrière-plan pour améliorer la sécurité et l'aide en cas d'urgence. + NSLocationWhenInUseUsageDescription + Alerte-Secours utilise votre localisation pour identifier et vous diriger vers les personnes nécessitant une assistance à proximité. Cette fonction est cruciale pour une intervention rapide et précise en cas d'urgence. + NSMicrophoneUsageDescription + Alerte-Secours requiert l'accès au microphone pour l'enregistrement de messages vocaux. Cette fonction permet une communication plus rapide et plus claire en situation d'urgence. + NSMotionUsageDescription + Alerte-Secours utilise la détection de mouvement pour optimiser la géolocalisation en arrière-plan, réduisant ainsi la consommation de batterie. Aucune donnée de mouvement n'est stockée ni transmise. + NSPhotoLibraryUsageDescription + Alerte-Secours demande l'accès à votre photothèque uniquement pour vous permettre de sélectionner une photo de profil. Cette fonctionnalité est utilisée exclusivement pour la personnalisation de votre compte. + NSRemoteNotificationUsageDescription + [Alerte-Secours] Cette application utilise les notifications pour pouvoir vous prévenir lorsque quelqu'un a besoin d'aide à proximité + NSUserNotificationUsageDescription + Alerte-Secours utilise les notifications pour vous informer immédiatement lorsqu'une personne à proximité nécessite une assistance urgente. Ces alertes sont essentielles pour une réponse rapide aux situations d'urgence. + UIBackgroundModes + + fetch + location + remote-notification + processing + + UILaunchStoryboardName + SplashScreen + UIRequiredDeviceCapabilities + + arm64 + + UIRequiresFullScreen + + UIStatusBarStyle + UIStatusBarStyleDefault + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIUserInterfaceStyle + Automatic + UIViewControllerBasedStatusBarAppearance + + + diff --git a/scripts/ios-upload.sh b/scripts/ios-upload.sh index f718f9e..5d26259 100755 --- a/scripts/ios-upload.sh +++ b/scripts/ios-upload.sh @@ -52,19 +52,30 @@ fi IPA_PLIST_TMP=$(mktemp -t as_ipa_Info.plist) unzip -p "$IPA_PATH" "Payload/AlerteSecours.app/Info.plist" > "$IPA_PLIST_TMP" 2>/dev/null || true -if [ -s "$IPA_PLIST_TMP" ]; then - IPA_PKG_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$IPA_PLIST_TMP" 2>/dev/null || echo "") - IPA_BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$IPA_PLIST_TMP" 2>/dev/null || echo "") - echo " IPA Info.plist (from payload): ${IPA_PKG_VERSION:-unknown} (${IPA_BUILD_NUMBER:-unknown})" - if [ -n "$IPA_PKG_VERSION" ] && [ -n "$IPA_BUILD_NUMBER" ]; then - if [ "$SRC_PKG_VERSION" != "$IPA_PKG_VERSION" ] || [ "$SRC_BUILD_NUMBER" != "$IPA_BUILD_NUMBER" ]; then - echo "Error: IPA version mismatch with source Info.plist." - echo "Hint: Run 'yarn bundle:ios' to export a fresh IPA aligned with current versions." - rm -f "$IPA_PLIST_TMP" - exit 1 + if [ -s "$IPA_PLIST_TMP" ]; then + IPA_PKG_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$IPA_PLIST_TMP" 2>/dev/null || echo "") + IPA_BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$IPA_PLIST_TMP" 2>/dev/null || echo "") + echo " IPA Info.plist (from payload): ${IPA_PKG_VERSION:-unknown} (${IPA_BUILD_NUMBER:-unknown})" + if [ -n "$IPA_PKG_VERSION" ] && [ -n "$IPA_BUILD_NUMBER" ]; then + # Enforce that CFBundleShortVersionString matches exactly between source and IPA. + if [ "$SRC_PKG_VERSION" != "$IPA_PKG_VERSION" ]; then + echo "Error: IPA CFBundleShortVersionString mismatch with source Info.plist." + echo "Hint: Run 'yarn bundle:ios' to export a fresh IPA aligned with current versions." + rm -f "$IPA_PLIST_TMP" + exit 1 + fi + + # Allow IPA CFBundleVersion to be greater than or equal to the source + # (Xcode may auto-increment it), but reject if it is lower, which + # indicates a stale IPA. + if [ "$IPA_BUILD_NUMBER" -lt "$SRC_BUILD_NUMBER" ]; then + echo "Error: IPA CFBundleVersion ($IPA_BUILD_NUMBER) is lower than source build number ($SRC_BUILD_NUMBER)." + echo "Hint: Run 'yarn bundle:ios' to export a fresh IPA aligned with current versions." + rm -f "$IPA_PLIST_TMP" + exit 1 + fi fi - fi -else + else echo "Warning: Could not read Info.plist from IPA payload for verification. Continuing." fi rm -f "$IPA_PLIST_TMP"