Compare commits

...

11 commits

Author SHA1 Message Date
43bc7f6f63
feat(links): add appui soutien 2025-12-11 09:16:08 +01:00
5e67e81f0a chore(release): 1.14.3 2025-12-10 13:47:21 +01:00
c2285691a7 fix(ios): ok 2025-12-10 13:46:47 +01:00
de22655d72 chore(release): 1.14.2 2025-12-09 11:39:30 +01:00
3a9affac0d chore: ios wip 2025-12-09 11:39:13 +01:00
cc6e5c0015 chore(release): 1.14.1 2025-12-08 22:44:21 +01:00
f69e959eb6 chore: ios wip 2025-12-08 22:43:59 +01:00
2da80b0ca9 fix(ios): wip 2025-11-30 23:40:42 +01:00
d0be878993 chore(release): 1.14.0 2025-11-30 23:34:03 +01:00
457b9f3d5c fix(ios): bundle export scipt 2025-11-30 23:01:11 +01:00
bf09f968a7 fix(ios): expo 53 upgrade crash and black screen 2025-11-30 13:39:37 +01:00
19 changed files with 403 additions and 124 deletions

View file

@ -2,6 +2,34 @@
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
## [1.14.3](https://github.com/alerte-secours/as-app/compare/v1.14.2...v1.14.3) (2025-12-10)
### Bug Fixes
* **ios:** ok ([c228569](https://github.com/alerte-secours/as-app/commit/c2285691a75591bfa9e17bf20f710cab66c241ac))
## [1.14.2](https://github.com/alerte-secours/as-app/compare/v1.14.1...v1.14.2) (2025-12-09)
## [1.14.1](https://github.com/alerte-secours/as-app/compare/v1.14.0...v1.14.1) (2025-12-08)
### Bug Fixes
* **ios:** wip ([2da80b0](https://github.com/alerte-secours/as-app/commit/2da80b0ca963efdc6df3cc6f3d1c8c86fd4f5c50))
## [1.14.0](https://github.com/alerte-secours/as-app/compare/v1.13.11...v1.14.0) (2025-11-30)
### Bug Fixes
* **android:** phone-call ([52fc3bc](https://github.com/alerte-secours/as-app/commit/52fc3bc24b2a2bf1fe5ae919cddca41d95b1053c))
* connect loader ([cccb491](https://github.com/alerte-secours/as-app/commit/cccb49134f55faf5f5d536e91509eba2743f2af8))
* **ios:** bundle export scipt ([457b9f3](https://github.com/alerte-secours/as-app/commit/457b9f3d5cb884551758df09bf69d09a179610db))
* **ios:** expo 53 upgrade crash and black screen ([bf09f96](https://github.com/alerte-secours/as-app/commit/bf09f968a7937ccfd90171cb12b74cd66d482466))
* **menu:** call emergency ([d755217](https://github.com/alerte-secours/as-app/commit/d7552171318cacb4a8df87add6462f49696b5d93))
* phone call ([492904c](https://github.com/alerte-secours/as-app/commit/492904cbe8a5ceec35a79610ea59cf5eaed42735))
## [1.13.13](https://github.com/alerte-secours/as-app/compare/v1.13.12...v1.13.13) (2025-10-23) ## [1.13.13](https://github.com/alerte-secours/as-app/compare/v1.13.12...v1.13.13) (2025-10-23)

View file

@ -83,8 +83,8 @@ android {
applicationId 'com.alertesecours' applicationId 'com.alertesecours'
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 225 versionCode 229
versionName "1.13.13" versionName "1.14.3"
multiDexEnabled true multiDexEnabled true
testBuildType System.getProperty('testBuildType', 'debug') testBuildType System.getProperty('testBuildType', 'debug')
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'

View file

@ -156,7 +156,6 @@ let config = {
appCompatVersion: "1.4.2", appCompatVersion: "1.4.2",
}, },
], ],
"react-native-background-fetch",
"@maplibre/maplibre-react-native", "@maplibre/maplibre-react-native",
"expo-location", "expo-location",
"react-native-map-link", "react-native-map-link",

View file

@ -3,14 +3,16 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 46; objectVersion = 54;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
14D5B34E2ED75B470019B7A4 /* MapLibre in Frameworks */ = {isa = PBXBuildFile; productRef = 190140CCA04FF5320B13EF02 /* MapLibre */; };
1BBEED8C23934E2FB66E5E99 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA27B437DADB447888114546 /* noop-file.swift */; }; 1BBEED8C23934E2FB66E5E99 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA27B437DADB447888114546 /* noop-file.swift */; };
C0F27A011234567800000002 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0F27A001234567800000001 /* AppDelegate.swift */; };
35CD05A718E2ABA5E9E4C339 /* Pods_AlerteSecours.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E5BBA8AFAF4DDE1BA21D931 /* Pods_AlerteSecours.framework */; }; 35CD05A718E2ABA5E9E4C339 /* Pods_AlerteSecours.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E5BBA8AFAF4DDE1BA21D931 /* Pods_AlerteSecours.framework */; };
3D137242100D4373995DC4E1 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7ECA2CAAE2DA44D8B2037DD1 /* GoogleService-Info.plist */; }; 3D137242100D4373995DC4E1 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7ECA2CAAE2DA44D8B2037DD1 /* GoogleService-Info.plist */; };
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
@ -33,9 +35,10 @@
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = AlerteSecours/SplashScreen.storyboard; sourceTree = "<group>"; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = AlerteSecours/SplashScreen.storyboard; sourceTree = "<group>"; };
ABCB8E07F9F748F9B1CF7AF4 /* AlerteSecours-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "AlerteSecours-Bridging-Header.h"; path = "AlerteSecours/AlerteSecours-Bridging-Header.h"; sourceTree = "<group>"; }; ABCB8E07F9F748F9B1CF7AF4 /* AlerteSecours-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "AlerteSecours-Bridging-Header.h"; path = "AlerteSecours/AlerteSecours-Bridging-Header.h"; sourceTree = "<group>"; };
BA27B437DADB447888114546 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "AlerteSecours/noop-file.swift"; sourceTree = "<group>"; }; BA27B437DADB447888114546 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "AlerteSecours/noop-file.swift"; sourceTree = "<group>"; };
C0F27A001234567800000001 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = AlerteSecours/AppDelegate.swift; sourceTree = "<group>"; };
BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = "<group>"; }; BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = "<group>"; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
F1755F69573E34927548F1C6 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = AlerteSecours/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; F1755F69573E34927548F1C6 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = AlerteSecours/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-AlerteSecours/ExpoModulesProvider.swift"; sourceTree = "<group>"; }; FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-AlerteSecours/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@ -44,6 +47,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
14D5B34E2ED75B470019B7A4 /* MapLibre in Frameworks */,
35CD05A718E2ABA5E9E4C339 /* Pods_AlerteSecours.framework in Frameworks */, 35CD05A718E2ABA5E9E4C339 /* Pods_AlerteSecours.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -63,6 +67,7 @@
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */,
7ECA2CAAE2DA44D8B2037DD1 /* GoogleService-Info.plist */, 7ECA2CAAE2DA44D8B2037DD1 /* GoogleService-Info.plist */,
BA27B437DADB447888114546 /* noop-file.swift */, BA27B437DADB447888114546 /* noop-file.swift */,
C0F27A001234567800000001 /* AppDelegate.swift */,
ABCB8E07F9F748F9B1CF7AF4 /* AlerteSecours-Bridging-Header.h */, ABCB8E07F9F748F9B1CF7AF4 /* AlerteSecours-Bridging-Header.h */,
F1755F69573E34927548F1C6 /* PrivacyInfo.xcprivacy */, F1755F69573E34927548F1C6 /* PrivacyInfo.xcprivacy */,
); );
@ -188,9 +193,13 @@
6261F4CAFAC24C76A6BFFF3F /* Fix Xcode 15 Bug */, 6261F4CAFAC24C76A6BFFF3F /* Fix Xcode 15 Bug */,
C81C81F52B15447FABB43839 /* Fix Xcode 15 Bug */, C81C81F52B15447FABB43839 /* Fix Xcode 15 Bug */,
CF366B2D9A42438884440324 /* Fix Xcode 15 Bug */, CF366B2D9A42438884440324 /* Fix Xcode 15 Bug */,
AE541D03A693440EB0578C34 /* Remove signature files (Xcode workaround) */,
BAD00DBFD7D44CD2956A18DF /* Fix Xcode 15 Bug */, BAD00DBFD7D44CD2956A18DF /* Fix Xcode 15 Bug */,
13769CCD78FE49A199BF8B6D /* Remove signature files (Xcode workaround) */, 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) */,
); );
buildRules = ( buildRules = (
); );
@ -923,6 +932,142 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "if [ \"$XCODE_VERSION_MAJOR\" = \"1500\" ]; then\n echo \"Remove signature files (Xcode 15 workaround)\"\n find \"$BUILD_DIR/${CONFIGURATION}-iphoneos\" -name \"*.signature\" -type f | xargs -r rm\nfi"; shellScript = "if [ \"$XCODE_VERSION_MAJOR\" = \"1500\" ]; then\n echo \"Remove signature files (Xcode 15 workaround)\"\n find \"$BUILD_DIR/${CONFIGURATION}-iphoneos\" -name \"*.signature\" -type f | xargs -r rm\nfi";
}; };
9E6F0A1338934BA5AD468D4B /* 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";
};
55D4C23AA23142E9AE24042B /* 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\";
";
};
229987488EA44E69AA932D58 /* 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";
};
1B0B11FFE0884C2B9A75B09D /* 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\";
";
};
A891237ADBD54747890A99FB /* 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";
};
B700EE07E2A24654A0953D3B /* 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\";
";
};
9E272D599E42446BB8DFD8D0 /* 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";
};
CBAD4F53ADB04F499371D5DE /* 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 */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
@ -934,6 +1079,7 @@
13B07FC11A68108700A75B9A /* main.m in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */,
B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */,
1BBEED8C23934E2FB66E5E99 /* noop-file.swift in Sources */, 1BBEED8C23934E2FB66E5E99 /* noop-file.swift in Sources */,
C0F27A011234567800000002 /* AppDelegate.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -957,7 +1103,10 @@
); );
INFOPLIST_FILE = AlerteSecours/Info.plist; INFOPLIST_FILE = AlerteSecours/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
@ -966,7 +1115,7 @@
); );
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = com.alertesecours.alertesecours; PRODUCT_BUNDLE_IDENTIFIER = com.alertesecours.alertesecours;
PRODUCT_NAME = AlerteSecours; PRODUCT_NAME = "AlerteSecours";
SWIFT_OBJC_BRIDGING_HEADER = "AlerteSecours/AlerteSecours-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "AlerteSecours/AlerteSecours-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -982,13 +1131,17 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = AlerteSecours/AlerteSecours.entitlements; CODE_SIGN_ENTITLEMENTS = AlerteSecours/AlerteSecours.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 2PZ49Y23LX; DEVELOPMENT_TEAM = 2PZ49Y23LX;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64";
INFOPLIST_FILE = AlerteSecours/Info.plist; INFOPLIST_FILE = AlerteSecours/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
@ -997,7 +1150,8 @@
); );
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.alertesecours.alertesecours; PRODUCT_BUNDLE_IDENTIFIER = com.alertesecours.alertesecours;
PRODUCT_NAME = AlerteSecours; PRODUCT_NAME = "AlerteSecours";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "AlerteSecours/AlerteSecours-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "AlerteSecours/AlerteSecours-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
@ -1064,7 +1218,10 @@
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios",
); );
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",
);
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
@ -1131,7 +1288,10 @@
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios",
); );
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",
);
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (

View file

@ -1,3 +1,10 @@
// //
// Use this file to import your target's public headers that you would like to expose to Swift. // Use this file to import your target's public headers that you would like to expose to Swift.
// //
#if __has_include(<React-RCTAppDelegate/RCTAppDelegate.h>)
#import <React-RCTAppDelegate/RCTAppDelegate.h>
#elif __has_include(<React_RCTAppDelegate/RCTAppDelegate.h>)
// for importing the header from framework, the dash will be transformed to underscore
#import <React_RCTAppDelegate/RCTAppDelegate.h>
#endif

View file

@ -1,7 +1,10 @@
#import <RCTAppDelegate.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <Expo/Expo.h>
@interface AppDelegate : EXAppDelegateWrapper // Legacy Objective-C AppDelegate left in place for compatibility.
// The actual application delegate is implemented in Swift as `AppDelegate`
// (subclassing ExpoAppDelegate).
@interface LegacyAppDelegate : UIResponder <UIApplicationDelegate>
@property (nonatomic, strong) UIWindow *window;
@end @end

View file

@ -1,75 +1,12 @@
#import "AppDelegate.h" #import "AppDelegate.h"
// @generated begin react-native-background-fetch-import - expo prebuild (DO NOT MODIFY) sync-fb890e6efd6cc6e67ebbda1087e0a6d7e0bcc527
#import <TSBackgroundFetch/TSBackgroundFetch.h>
// @generated end react-native-background-fetch-import
#import <Firebase/Firebase.h> #import <Firebase/Firebase.h>
#import <React/RCTBundleURLProvider.h> @implementation LegacyAppDelegate
#import <React/RCTLinkingManager.h>
@implementation AppDelegate // This legacy Objective-C AppDelegate is no longer used as the main
// application delegate. The app now uses the Swift-based
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions // `AppDelegate: ExpoAppDelegate` defined in AppDelegate.swift.
{ // We keep this stub implementation so that any generated references
// @generated begin @react-native-firebase/app-didFinishLaunchingWithOptions - expo prebuild (DO NOT MODIFY) sync-ecd111c37e49fdd1ed6354203cd6b1e2a38cccda // to `LegacyAppDelegate` continue to compile.
[FIRApp configure];
// @generated end @react-native-firebase/app-didFinishLaunchingWithOptions
self.moduleName = @"main";
// You can add your custom initial props in the dictionary below.
// They will be passed down to the ViewController used by React Native.
self.initialProps = @{};
// @generated begin react-native-background-fetch-didFinishLaunchingWithOptions - expo prebuild (DO NOT MODIFY) sync-2d5ef5f3788ef11f6e72e5480fdbef5f7a21f0f0
[[TSBackgroundFetch sharedInstance] didFinishLaunching];
// @generated end react-native-background-fetch-didFinishLaunchingWithOptions
// @generated begin react-native-background-fetch-didFinishLaunching - expo prebuild (DO NOT MODIFY) sync-2d5ef5f3788ef11f6e72e5480fdbef5f7a21f0f0
[[TSBackgroundFetch sharedInstance] didFinishLaunching];
// @generated end react-native-background-fetch-didFinishLaunching
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
return [self bundleURL];
}
- (NSURL *)bundleURL
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
// Linking API
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];
}
// Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result;
}
// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
return [super application:application didFailToRegisterForRemoteNotificationsWithError:error];
}
// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
@end @end

View file

@ -0,0 +1,76 @@
import EXUpdates
import FirebaseCore
import React
import TSBackgroundFetch
import UIKit
@objc(AppDelegate)
class AppDelegate: RCTAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
NSLog("[AppDelegate] didFinishLaunchingWithOptions (RCTAppDelegate)")
// Configure Firebase (react-native-firebase).
FirebaseApp.configure()
// Transistorsoft background fetch bootstrap.
TSBackgroundFetch.sharedInstance().didFinishLaunching()
NSLog("[AppDelegate] TSBackgroundFetch didFinishLaunching")
// Initialize expo-updates controller so AppController.sharedInstance can be used safely.
AppController.initializeWithoutStarting()
AppController.sharedInstance.start()
// Configure React Native root module.
self.moduleName = "main"
self.initialProps = [:]
let result = super.application(application, didFinishLaunchingWithOptions: launchOptions)
NSLog("[AppDelegate] super.application(...) -> %@", result ? "true" : "false")
return result
}
// MARK: - RCTBridgeDelegate / JS bundle location
@objc
override func sourceURL(for bridge: RCTBridge!) -> URL! {
#if DEBUG
let url = RCTBundleURLProvider.sharedSettings().jsBundleURL(
forBundleRoot: ".expo/.virtual-metro-entry",
fallbackExtension: nil
)
NSLog("[AppDelegate] sourceURL(for:) (DEBUG) -> %@", url?.absoluteString ?? "nil")
return url
#else
let url = self.bundleURL()
NSLog("[AppDelegate] sourceURL(for:) (RELEASE) -> %@", url?.absoluteString ?? "nil")
return url
#endif
}
@objc
override func bundleURL() -> URL! {
#if DEBUG
let url = RCTBundleURLProvider.sharedSettings().jsBundleURL(
forBundleRoot: ".expo/.virtual-metro-entry",
fallbackExtension: nil
)
NSLog("[AppDelegate] bundleURL() (DEBUG) -> %@", url?.absoluteString ?? "nil")
return url
#else
if let updatesURL = AppController.sharedInstance.launchAssetUrl() {
NSLog("[AppDelegate] bundleURL() (RELEASE) -> %@", updatesURL.absoluteString)
return updatesURL
}
let url = Bundle.main.url(forResource: "main", withExtension: "jsbundle")
if let url = url {
NSLog("[AppDelegate] bundleURL() (RELEASE fallback) -> %@", url.absoluteString)
} else {
NSLog("[AppDelegate] bundleURL() (RELEASE fallback) -> nil (main.jsbundle not found)")
}
return url
#endif
}
}

View file

@ -25,7 +25,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.13.13</string> <string>1.14.3</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
@ -48,7 +48,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>225</string> <string>229</string>
<key>ITSAppUsesNonExemptEncryption</key> <key>ITSAppUsesNonExemptEncryption</key>
<false/> <false/>
<key>LSApplicationQueriesSchemes</key> <key>LSApplicationQueriesSchemes</key>

View file

@ -1,10 +1,12 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "AlerteSecours-Swift.h"
#import "AppDelegate.h"
int main(int argc, char * argv[]) { int main(int argc, char * argv[]) {
@autoreleasepool { @autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); // Use the Swift ExpoAppDelegate-based AppDelegate as the principal class.
// The Objective-C runtime name of the Swift class is `AppDelegate`
// because it is annotated with `@objc(AppDelegate)` in AppDelegate.swift.
return UIApplicationMain(argc, argv, nil, @"AppDelegate");
} }
} }

View file

@ -1,4 +1,8 @@
// import Foundation
// @generated
// A blank Swift file must be created for native modules with Swift files to work correctly. /// Legacy RCTAppDelegate-based implementation removed.
// /// The real application delegate is `AppDelegate: ExpoAppDelegate` in `AppDelegate.swift`.
/// This placeholder exists only to satisfy any stale Xcode references and has no effect
/// on application startup or expo-updates behavior.
@objc(NoopLegacyAppDelegate)
class NoopLegacyAppDelegate: NSObject {}

View file

@ -9,6 +9,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "AppDelegate.h" #import "AppDelegate.h"
#import <TSBackgroundFetch/TSBackgroundFetch.h> #import <TSBackgroundFetch/TSBackgroundFetch.h>
#import <objc/runtime.h>
@implementation AppDelegate(AppDelegate) @implementation AppDelegate(AppDelegate)
@ -20,3 +21,59 @@
} }
@end @end
// Guard against duplicate BGTaskScheduler registrations by TSBGTask.
// Crash observed:
// 'Launch handler for task with identifier com.transistorsoft has already been registered'
// thrown when BGTaskScheduler is asked to register the same identifier multiple times.
// We swizzle +[TSBGTask registerForTaskWithIdentifier:] to:
// - log each registration attempt
// - ignore subsequent attempts for the same identifier instead of crashing.
@interface TSBGTask : NSObject
+ (void)registerForTaskWithIdentifier:(NSString *)identifier;
@end
@implementation TSBGTask (ASGuard)
+ (void)load
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class cls = object_getClass((id)self);
SEL originalSelector = @selector(registerForTaskWithIdentifier:);
SEL swizzledSelector = @selector(as_registerForTaskWithIdentifier:);
Method originalMethod = class_getClassMethod(cls, originalSelector);
Method swizzledMethod = class_getClassMethod(cls, swizzledSelector);
if (originalMethod && swizzledMethod) {
method_exchangeImplementations(originalMethod, swizzledMethod);
NSLog(@"[TSBGTask+ASGuard] Swizzled +registerForTaskWithIdentifier:");
} else {
NSLog(@"[TSBGTask+ASGuard] Failed to swizzle +registerForTaskWithIdentifier: (original=%p, swizzled=%p)", originalMethod, swizzledMethod);
}
});
}
+ (void)as_registerForTaskWithIdentifier:(NSString *)identifier
{
static NSMutableSet<NSString *> *as_registeredTaskIdentifiers;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
as_registeredTaskIdentifiers = [NSMutableSet set];
});
if ([as_registeredTaskIdentifiers containsObject:identifier]) {
NSLog(@"[TSBGTask+ASGuard] Skipping duplicate BGTaskScheduler registration for identifier '%@'", identifier);
return;
}
NSLog(@"[TSBGTask+ASGuard] Registering BGTask identifier '%@'", identifier);
[as_registeredTaskIdentifiers addObject:identifier];
// Call original implementation (now swizzled).
[self as_registerForTaskWithIdentifier:identifier];
}
@end

View file

@ -14,11 +14,6 @@
<true/> <true/>
<key>manageAppVersionAndBuildNumber</key> <key>manageAppVersionAndBuildNumber</key>
<true/> <true/>
<key>provisioningProfiles</key>
<dict>
<key>com.alertesecours.alertesecours</key>
<string>match AppStore com.alertesecours.alertesecours</string>
</dict>
<key>destination</key> <key>destination</key>
<string>export</string> <string>export</string>
<key>distributionBundleIdentifier</key> <key>distributionBundleIdentifier</key>

View file

@ -1,6 +1,6 @@
{ {
"name": "alerte-secours", "name": "alerte-secours",
"version": "1.13.13", "version": "1.14.3",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"start": "expo start --dev-client --private-key-path ./keys/private-key.pem", "start": "expo start --dev-client --private-key-path ./keys/private-key.pem",
@ -50,8 +50,8 @@
"screenshot:android": "scripts/screenshot-android.sh" "screenshot:android": "scripts/screenshot-android.sh"
}, },
"customExpoVersioning": { "customExpoVersioning": {
"versionCode": 225, "versionCode": 229,
"buildNumber": 225 "buildNumber": 229
}, },
"commit-and-tag-version": { "commit-and-tag-version": {
"scripts": { "scripts": {

View file

@ -7,28 +7,15 @@ set +a
# Print debug information # Print debug information
echo "Debug information:" echo "Debug information:"
echo "ASC_API_KEY_PATH: $ASC_API_KEY_PATH" echo "Using local app-store signing via exportOptions.plist (method=app-store)"
echo "ASC_API_KEY_ID: $ASC_API_KEY_ID"
echo "ASC_API_ISSUER_ID: $ASC_API_ISSUER_ID"
echo "PROVIDER_ID: $PROVIDER_ID"
# Verify the auth key file exists echo "Available code signing identities (security find-identity -v -p codesigning):"
if [ ! -f "$ASC_API_KEY_PATH" ]; then xcrun security find-identity -v -p codesigning || echo "No code signing identities found or security tool error"
echo "Error: Authentication key file not found at: $ASC_API_KEY_PATH"
exit 1
fi
echo "Auth key file exists at: $ASC_API_KEY_PATH" # Execute xcodebuild using local signing (Apple Distribution certificate + Xcode-managed profiles)
echo "File permissions:"
ls -l "$ASC_API_KEY_PATH"
# Execute xcodebuild with the environment variables
cd ios && xcodebuild -exportArchive \ cd ios && xcodebuild -exportArchive \
-archivePath AlerteSecours.xcarchive \ -archivePath AlerteSecours.xcarchive \
-exportPath ./build \ -exportPath ./build \
-exportOptionsPlist exportOptions.plist \ -exportOptionsPlist exportOptions.plist \
-allowProvisioningUpdates \ -allowProvisioningUpdates \
-authenticationKeyID "$ASC_API_KEY_ID" \
-authenticationKeyIssuerID "$ASC_API_ISSUER_ID" \
-authenticationKeyPath "$ASC_API_KEY_PATH" \
-verbose -verbose

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View file

@ -4,11 +4,12 @@ import { TouchableRipple } from "react-native-paper";
import { createStyles } from "~/theme"; import { createStyles } from "~/theme";
import Text from "~/components/Text"; import Text from "~/components/Text";
export default function AppButton({ export default function WebButton({
logo, logo,
label, label,
description, description,
url, url,
tel,
style, style,
buttonStyle, buttonStyle,
labelTextStyle, labelTextStyle,
@ -17,8 +18,17 @@ export default function AppButton({
const styles = useStyles(); const styles = useStyles();
const openPress = useCallback(async () => { const openPress = useCallback(async () => {
Linking.openURL(url); if (tel) {
}, [url]); const cleanTel = tel.replace(/\s+/g, "");
const target = cleanTel.startsWith("tel:") ? cleanTel : `tel:${cleanTel}`;
await Linking.openURL(target);
return;
}
if (url) {
await Linking.openURL(url);
}
}, [tel, url]);
return ( return (
<View style={[styles.container, style]}> <View style={[styles.container, style]}>

View file

@ -0,0 +1,12 @@
import WebButton from "~/components/Links/WebButton";
export default function WebLinkAppuiSoutien() {
return (
<WebButton
logo={require("~/assets/img/links/logo-appui-soutien.png")}
label="Appui Soutien Montjean (16)"
description="Véhicule dappui bénévole pour les petites communes dans un rayon denviron 30 km autour de Montjean (16240) : renfort aux secours, dégagement de la voie publique, soutien logistique et aux sinistrés. Astreinte : 06 84 38 16 31."
tel="+33684381631"
/>
);
}

View file

@ -28,6 +28,7 @@ import WebLinkEmerga from "~/containers/Links/WebLinks/Emerga";
import WebLinkDeltaPlane from "~/containers/Links/WebLinks/DeltaPlane"; import WebLinkDeltaPlane from "~/containers/Links/WebLinks/DeltaPlane";
import WebLinkDroguesInfoService from "~/containers/Links/WebLinks/DroguesInfoService"; import WebLinkDroguesInfoService from "~/containers/Links/WebLinks/DroguesInfoService";
import WebLinkIJP from "~/containers/Links/WebLinks/IJP"; import WebLinkIJP from "~/containers/Links/WebLinks/IJP";
import WebLinkAppuiSoutien from "~/containers/Links/WebLinks/AppuiSoutien";
export default function Links() { export default function Links() {
const styles = useStyles(); const styles = useStyles();
@ -56,6 +57,7 @@ export default function Links() {
<WebLinkIJP /> <WebLinkIJP />
<WebLinkDroguesInfoService /> <WebLinkDroguesInfoService />
<WebLinkDeltaPlane /> <WebLinkDeltaPlane />
<WebLinkAppuiSoutien />
</View> </View>
<Title style={styles.title}>S'engager</Title> <Title style={styles.title}>S'engager</Title>
<View style={styles.section}> <View style={styles.section}>