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"