diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index bde49a5..92aa763 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -26,6 +26,7 @@ + diff --git a/android/gradlew b/android/gradlew old mode 100644 new mode 100755 diff --git a/app/(tabs)/countdown.tsx b/app/(tabs)/countdown.tsx index 5fd98dc..a08c6a0 100644 --- a/app/(tabs)/countdown.tsx +++ b/app/(tabs)/countdown.tsx @@ -1,10 +1,11 @@ import React, { useState, useEffect } from 'react'; -import { StyleSheet, ActivityIndicator, TouchableOpacity } from 'react-native'; +import { StyleSheet, ActivityIndicator, TouchableOpacity, View } from 'react-native'; import { ThemedText } from '@/components/ThemedText'; import { ThemedView } from '@/components/ThemedView'; +import { SafeAreaView } from 'react-native-safe-area-context'; // Import for safe area handling import { LinearGradient } from 'expo-linear-gradient'; import axios from 'axios'; -import ChangeDateDrawer from '@/components/ChangeDateDrawer'; +import ChangeDateDrawer from '@/components/ChangeDateDrawer'; // Date drawer component const API_KEY = process.env.EXPO_PUBLIC_API_KEY; const BASE_URL = process.env.EXPO_PUBLIC_BASE_URL; @@ -16,7 +17,6 @@ const fetchCountdownDate = async () => { params: { apiKey: API_KEY } }); if (response.data && response.data[0] && response.data[0].countdown) { - //console.log('Countdown date:', response.data[0].countdown); return new Date(response.data[0].countdown); } else { console.error('Unexpected API response format:', response.data); @@ -98,29 +98,32 @@ export default function TabTwoScreen() { start={{ x: 0, y: 0 }} end={{ x: 1, y: 1 }} > - - Countdown to Next Visit - - - - - + + + Countdown to Next Visit + + {/* Countdown items displayed horizontally with flexbox */} + + + + + + setIsDateDrawerVisible(true)} + > + Change Date + + {targetDate && ( + setIsDateDrawerVisible(false)} + onDateChange={handleDateChange} + currentDate={targetDate} + /> + )} - setIsDateDrawerVisible(true)} - > - Change Date - - {targetDate && ( - setIsDateDrawerVisible(false)} - onDateChange={handleDateChange} - currentDate={targetDate} - /> - )} - + ); } @@ -135,31 +138,39 @@ function CountdownItem({ value, label }: { value: number; label: string }) { } const styles = StyleSheet.create({ + safeContainer: { + flex: 1, + backgroundColor: 'transparent', // Background color for safety area view + }, container: { flex: 1, + backgroundColor: 'transparent', + }, + innerContainer: { + flex: 1, + justifyContent: 'center', alignItems: 'center', + paddingHorizontal: 20, // Padding around the edges backgroundColor: 'transparent', }, title: { - fontSize: 64, - lineHeight: 64, - fontWeight: 'bold', - marginTop: 100, - marginBottom: 60, + fontSize: 40, // Shrinking the title for smaller screens + lineHeight: 50, + fontWeight: '600', textAlign: 'center', - paddingHorizontal: 20, + paddingHorizontal: 10, }, countdownContainer: { flexDirection: 'row', - justifyContent: 'center', + justifyContent: 'space-around', // Spread countdown items more evenly alignItems: 'center', + width: '100%', backgroundColor: 'transparent', - marginBottom: 180, + marginVertical: 40, // Added some space between countdown and title/button }, countdownItem: { - margin: 10, - lineHeight: 42, alignItems: 'center', + marginHorizontal: 10, // Each item has horizontal spacing backgroundColor: 'transparent', }, countdownValue: { @@ -168,18 +179,18 @@ const styles = StyleSheet.create({ fontWeight: 'bold', }, countdownLabel: { - fontSize: 32, - lineHeight: 42, + fontSize: 18, // Reducing size of the label for better fit + lineHeight: 24, }, changeButton: { backgroundColor: '#730FF8', - padding: 15, - borderRadius: 10, - marginTop: 40, + padding: 12, + borderRadius: 8, + marginTop: 20, }, changeButtonText: { color: 'white', - fontSize: 22, + fontSize: 18, fontWeight: 'bold', }, -}); +}); \ No newline at end of file diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx index 3d5af4a..653874b 100644 --- a/app/(tabs)/index.tsx +++ b/app/(tabs)/index.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react'; -import { StyleSheet } from 'react-native'; +import { StyleSheet, SafeAreaView } from 'react-native'; import { ThemedText } from '@/components/ThemedText'; import { ThemedView } from '@/components/ThemedView'; import { LinearGradient } from 'expo-linear-gradient'; @@ -50,9 +50,11 @@ export default function HomeScreen() { start={{ x: 0, y: 0 }} end={{ x: 1, y: 1 }} > - - {message} - + + + {message} + + ); } diff --git a/app/(tabs)/sendmessage.tsx b/app/(tabs)/sendmessage.tsx index f26232d..0c62d43 100644 --- a/app/(tabs)/sendmessage.tsx +++ b/app/(tabs)/sendmessage.tsx @@ -7,44 +7,49 @@ import { Keyboard, TouchableWithoutFeedback, KeyboardAvoidingView, - Platform, - View + Platform, + SafeAreaView, // SafeAreaView import for handling safe areas + View } from 'react-native'; import { ThemedText } from '@/components/ThemedText'; -import { ThemedView } from '@/components/ThemedView'; import { LinearGradient } from 'expo-linear-gradient'; import AsyncStorage from '@react-native-async-storage/async-storage'; import axios from 'axios'; +// Environment variables const API_KEY = process.env.EXPO_PUBLIC_API_KEY; const BASE_URL = process.env.EXPO_PUBLIC_BASE_URL; export default function SendMessageScreen() { const [message, setMessage] = useState(''); - const [userId, setUserId] = useState(null); - const [inputHeight, setInputHeight] = useState(100); + const [userId, setUserId] = useState(null); // Use number type for userId + const [inputHeight, setInputHeight] = useState(120); // Set initial height for TextInput + // Update TextInput height dynamically const updateInputHeight = (height: number) => { - setInputHeight(Math.max(100, height)); + setInputHeight(Math.max(120, height)); // Ensure it doesn't shrink below 120px }; + // On component mount, get the user ID from AsyncStorage useEffect(() => { + const getUserId = async () => { + try { + const storedUser = await AsyncStorage.getItem('@user'); + if (storedUser) { + const user = JSON.parse(storedUser); + setUserId(user.id); + } + } catch (error) { + console.error('Failed to get user ID:', error); + } + }; + getUserId(); }, []); - const getUserId = async () => { - try { - const storedUser = await AsyncStorage.getItem('@user'); - if (storedUser) { - const user = JSON.parse(storedUser); - setUserId(user.id); - } - } catch (error) { - console.error('Failed to get user ID:', error); - } - }; - + // Function to send a message const sendMessage = async () => { + // Input validation if (!message.trim()) { Alert.alert('Error', 'Please enter a message'); return; @@ -60,8 +65,8 @@ export default function SendMessageScreen() { params: { apiKey: API_KEY, userId, message } }); Alert.alert('Success', 'Message sent successfully'); - setMessage(''); - Keyboard.dismiss(); + setMessage(''); // Clear the message input on success + Keyboard.dismiss(); // Dismiss the keyboard } catch (error) { console.error('Failed to send message:', error); Alert.alert('Error', 'Failed to send message. Please try again.'); @@ -69,75 +74,87 @@ export default function SendMessageScreen() { }; return ( - + // Ensure keyboard behaves correctly on both iOS and Android - - - - - updateInputHeight(event.nativeEvent.contentSize.height) - } - /> - - Send Message - - - + + {/* SafeAreaView for notch and layout safety */} + + + + + updateInputHeight(event.nativeEvent.contentSize.height) + } + /> + + {/* Send Message Button */} + + Send Message + + + + ); } const styles = StyleSheet.create({ + safeContainer: { + flex: 1, + backgroundColor: 'transparent', // Ensure full-screen safe area + }, container: { flex: 1, - alignItems: 'center', - padding: 20, backgroundColor: 'transparent', - width: '100%', + }, + chatContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + paddingHorizontal: 20, // Ensures padding around the input and button }, input: { width: '100%', - minHeight: 120, + minHeight: 150, // Minimum height for the TextInput borderColor: 'transparent', borderWidth: 1, borderRadius: 10, padding: 10, - marginBottom: 20, - marginTop: 160, - fontSize: 42, - lineHeight: 60, + marginBottom: 10, + fontSize: 32, // Adjust font size to shrink for smaller devices + lineHeight: 40, // Adjust line height for better readability textAlign: 'center', color: '#FFFFFF', fontWeight: 'bold', - backgroundColor: 'transparent', + //backgroundColor: 'rgba(0, 0, 0, 0.1)', // Subtle background for text input + backgroundColor: 'transparent', // Transparent background }, button: { backgroundColor: '#730FF8', - padding: 15, - borderColor: '#730FF8', + paddingVertical: 12, + paddingHorizontal: 20, borderRadius: 10, }, buttonText: { color: 'white', - fontSize: 22, + fontSize: 18, fontWeight: 'bold', }, -}); +}); \ No newline at end of file diff --git a/app/_layout.tsx b/app/_layout.tsx index 017817e..65575f1 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -105,12 +105,11 @@ useEffect(() => { 'Content-Type': 'application/json', }, body: JSON.stringify({ - apiKey: API_KEY, // Use the API key stored in the environment + apiKey: API_KEY, userId: user.id, // The logged-in user's ID pushToken: token, // The Expo push token collected }), }); - console.log('Push token successfully sent to backend'); } else { console.log('No user found in AsyncStorage'); diff --git a/build-1726163811972.ipa b/build-1726163811972.ipa deleted file mode 100644 index f634a23..0000000 Binary files a/build-1726163811972.ipa and /dev/null differ diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 64153ed..4e1f46f 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,11 +1,15 @@ PODS: - boost (1.83.0) - DoubleConversion (1.1.6) + - EXApplication (5.9.1): + - ExpoModulesCore - EXConstants (16.0.2): - ExpoModulesCore - EXJSONUtils (0.13.1) - EXManifests (0.14.3): - ExpoModulesCore + - EXNotifications (0.28.16): + - ExpoModulesCore - Expo (51.0.32): - ExpoModulesCore - expo-dev-client (4.0.26): @@ -217,6 +221,8 @@ PODS: - Yoga - ExpoAsset (10.0.10): - ExpoModulesCore + - ExpoDevice (6.0.2): + - ExpoModulesCore - ExpoFileSystem (17.0.1): - ExpoModulesCore - ExpoFont (12.0.10): @@ -1538,15 +1544,18 @@ PODS: DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - EXApplication (from `../node_modules/expo-application/ios`) - EXConstants (from `../node_modules/expo-constants/ios`) - EXJSONUtils (from `../node_modules/expo-json-utils/ios`) - EXManifests (from `../node_modules/expo-manifests/ios`) + - EXNotifications (from `../node_modules/expo-notifications/ios`) - Expo (from `../node_modules/expo`) - expo-dev-client (from `../node_modules/expo-dev-client/ios`) - expo-dev-launcher (from `../node_modules/expo-dev-launcher`) - expo-dev-menu (from `../node_modules/expo-dev-menu`) - expo-dev-menu-interface (from `../node_modules/expo-dev-menu-interface/ios`) - ExpoAsset (from `../node_modules/expo-asset/ios`) + - ExpoDevice (from `../node_modules/expo-device/ios`) - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) - ExpoFont (from `../node_modules/expo-font/ios`) - ExpoHead (from `../node_modules/expo-router/ios`) @@ -1628,12 +1637,16 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + EXApplication: + :path: "../node_modules/expo-application/ios" EXConstants: :path: "../node_modules/expo-constants/ios" EXJSONUtils: :path: "../node_modules/expo-json-utils/ios" EXManifests: :path: "../node_modules/expo-manifests/ios" + EXNotifications: + :path: "../node_modules/expo-notifications/ios" Expo: :path: "../node_modules/expo" expo-dev-client: @@ -1646,6 +1659,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-dev-menu-interface/ios" ExpoAsset: :path: "../node_modules/expo-asset/ios" + ExpoDevice: + :path: "../node_modules/expo-device/ios" ExpoFileSystem: :path: "../node_modules/expo-file-system/ios" ExpoFont: @@ -1789,15 +1804,18 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: d3f49c53809116a5d38da093a8aa78bf551aed09 DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 + EXApplication: c08200c34daca7af7fd76ac4b9d606077410e8ad EXConstants: 409690fbfd5afea964e5e9d6c4eb2c2b59222c59 EXJSONUtils: 30c17fd9cc364d722c0946a550dfbf1be92ef6a4 EXManifests: c1fab4c3237675e7b0299ea8df0bcb14baca4f42 + EXNotifications: b1b174716b287e161350a18de1d253aabceeea2d Expo: 33132a667698a3259a4e6c0af1b4936388e5fa33 expo-dev-client: 4f9100af6be210a360aa67f42649881251aa362a expo-dev-launcher: c8e85bf244a2492448c88adbc3585ca13572f7b9 expo-dev-menu: 0db38ce92be7228dadb588f7069e037fd9d165d8 expo-dev-menu-interface: be32c09f1e03833050f0ee290dcc86b3ad0e73e4 ExpoAsset: 323700f291684f110fb55f0d4022a3362ea9f875 + ExpoDevice: fc94f0e42ecdfd897e7590f2874fc64dfa7e9b1c ExpoFileSystem: 80bfe850b1f9922c16905822ecbf97acd711dc51 ExpoFont: 00756e6c796d8f7ee8d211e29c8b619e75cbf238 ExpoHead: fcb28a68ed4ba28f177394d2dfb8a0a8824cd103 diff --git a/ios/fuse.xcodeproj/project.pbxproj b/ios/fuse.xcodeproj/project.pbxproj index c61a51a..973a45b 100644 --- a/ios/fuse.xcodeproj/project.pbxproj +++ b/ios/fuse.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -30,7 +30,7 @@ 6C2E3173556A471DD304B334 /* Pods-fuse.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-fuse.debug.xcconfig"; path = "Target Support Files/Pods-fuse/Pods-fuse.debug.xcconfig"; sourceTree = ""; }; 7A4D352CD337FB3A3BF06240 /* Pods-fuse.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-fuse.release.xcconfig"; path = "Target Support Files/Pods-fuse/Pods-fuse.release.xcconfig"; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = fuse/SplashScreen.storyboard; sourceTree = ""; }; - B50056BB879EC1FE9A5251D0 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = fuse/PrivacyInfo.xcprivacy; sourceTree = ""; }; + B50056BB879EC1FE9A5251D0 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = fuse/PrivacyInfo.xcprivacy; sourceTree = ""; }; BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; E3C56C9C8A70435F80C980CD /* fuse-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "fuse-Bridging-Header.h"; path = "fuse/fuse-Bridging-Header.h"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; @@ -273,8 +273,11 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-fuse/Pods-fuse-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/EXApplication/ExpoApplication_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXNotifications/ExpoNotifications_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoDevice/ExpoDevice_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/ExpoSystemUI/ExpoSystemUI_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage/RNCAsyncStorage_resources.bundle", @@ -303,8 +306,11 @@ ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoApplication_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoNotifications_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoDevice_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoSystemUI_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNCAsyncStorage_resources.bundle", @@ -385,9 +391,14 @@ "FB_SONARKIT_ENABLED=1", ); INFOPLIST_FILE = fuse/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Fuse; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.lifestyle"; IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -413,9 +424,14 @@ CODE_SIGN_ENTITLEMENTS = fuse/fuse.entitlements; CURRENT_PROJECT_VERSION = 1; INFOPLIST_FILE = fuse/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Fuse; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.lifestyle"; IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -483,14 +499,14 @@ IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD = ""; LDPLUSPLUS = ""; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - ); + OTHER_LDFLAGS = "$(inherited) "; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; @@ -542,13 +558,13 @@ IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD = ""; LDPLUSPLUS = ""; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - ); + OTHER_LDFLAGS = "$(inherited) "; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; diff --git a/ios/fuse/Info.plist b/ios/fuse/Info.plist index 436cf15..c4bdcd9 100644 --- a/ios/fuse/Info.plist +++ b/ios/fuse/Info.plist @@ -31,6 +31,12 @@ com.gibbyb.fuse + + CFBundleURLSchemes + + exp+fuse + + CFBundleVersion 1 @@ -46,6 +52,8 @@ NSUserActivityTypes $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route + $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route + $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route UILaunchStoryboardName SplashScreen diff --git a/ios/fuse/PrivacyInfo.xcprivacy b/ios/fuse/PrivacyInfo.xcprivacy index 5bb83c5..c6b452e 100644 --- a/ios/fuse/PrivacyInfo.xcprivacy +++ b/ios/fuse/PrivacyInfo.xcprivacy @@ -4,6 +4,16 @@ NSPrivacyAccessedAPITypes + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + 0A2A.1 + 3B52.1 + + NSPrivacyAccessedAPIType NSPrivacyAccessedAPICategoryUserDefaults @@ -14,12 +24,10 @@ NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPICategorySystemBootTime NSPrivacyAccessedAPITypeReasons - 0A2A.1 - 3B52.1 - C617.1 + 35F9.1 @@ -31,14 +39,6 @@ 85F4.1 - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategorySystemBootTime - NSPrivacyAccessedAPITypeReasons - - 35F9.1 - - NSPrivacyCollectedDataTypes diff --git a/ios/fuse/fuse.entitlements b/ios/fuse/fuse.entitlements index f683276..018a6e2 100644 --- a/ios/fuse/fuse.entitlements +++ b/ios/fuse/fuse.entitlements @@ -1,5 +1,8 @@ - + + aps-environment + development + \ No newline at end of file