diff --git a/ios/.gitignore b/ios/.gitignore index 6dea0152..e017b71f 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -1,23 +1,16 @@ App/build -App/Pods App/output -App/App/public -DerivedData -xcuserdata -*.xcuserstate +App/Pods -# Cordova plugins for Capacitor -capacitor-cordova-ios-plugins +App/*.xcodeproj/xcuserdata/ +App/*.xcworkspace/xcuserdata/ +App/*/public # Generated Config files -App/App/capacitor.config.json -App/App/config.xml +App/*/capacitor.config.json +App/*/config.xml -# User-specific Xcode files -App/App.xcodeproj/xcuserdata/*.xcuserdatad/ -App/App.xcodeproj/*.xcuserstate +# Cordova plugins for Capacitor +capacitor-cordova-ios-plugins -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots -fastlane/test_output +DerivedData diff --git a/ios/App/Time Safari.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj similarity index 89% rename from ios/App/Time Safari.xcodeproj/project.pbxproj rename to ios/App/App.xcodeproj/project.pbxproj index 04565eb8..1a3f1d76 100644 --- a/ios/App/Time Safari.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 2BC611FE3D7967BDB623FF21 /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E0C2082015AEE6A0776A3EAB /* Pods_App.framework */; }; 2FAD9763203C412B000D30F8 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = 2FAD9762203C412B000D30F8 /* config.xml */; }; 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */ = {isa = PBXBuildFile; fileRef = 50379B222058CBB4000EE86E /* capacitor.config.json */; }; 504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; }; @@ -14,21 +15,22 @@ 504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; }; 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; }; 50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; }; - A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = ""; }; 50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = ""; }; - 504EC3041FED79650016851F /* Time Safari.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Time Safari.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; 504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = ""; }; - AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 821226CEE4D47A540167CC8F /* Pods-Time Safari.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Time Safari.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Time Safari/Pods-Time Safari.debug.xcconfig"; sourceTree = ""; }; AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = ""; }; + E0C2082015AEE6A0776A3EAB /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EF03C3F99471948925ED5AC3 /* Pods-Time Safari.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Time Safari.release.xcconfig"; path = "Pods/Target Support Files/Pods-Time Safari/Pods-Time Safari.release.xcconfig"; sourceTree = ""; }; FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -37,7 +39,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */, + 2BC611FE3D7967BDB623FF21 /* Pods_App.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -47,7 +49,7 @@ 27E2DDA53C4D2A4D1A88CE4A /* Frameworks */ = { isa = PBXGroup; children = ( - AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */, + E0C2082015AEE6A0776A3EAB /* Pods_App.framework */, ); name = Frameworks; sourceTree = ""; @@ -65,7 +67,7 @@ 504EC3051FED79650016851F /* Products */ = { isa = PBXGroup; children = ( - 504EC3041FED79650016851F /* Time Safari.app */, + 504EC3041FED79650016851F /* App.app */, ); name = Products; sourceTree = ""; @@ -90,6 +92,8 @@ children = ( FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */, AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */, + 821226CEE4D47A540167CC8F /* Pods-Time Safari.debug.xcconfig */, + EF03C3F99471948925ED5AC3 /* Pods-Time Safari.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -97,9 +101,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 504EC3031FED79650016851F /* Time Safari */ = { + 504EC3031FED79650016851F /* App */ = { isa = PBXNativeTarget; - buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "Time Safari" */; + buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */; buildPhases = ( 6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */, 504EC3001FED79650016851F /* Sources */, @@ -111,9 +115,9 @@ ); dependencies = ( ); - name = "Time Safari"; - productName = App; - productReference = 504EC3041FED79650016851F /* Time Safari.app */; + name = App; + productName = "Time Safari"; + productReference = 504EC3041FED79650016851F /* App.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -132,7 +136,7 @@ }; }; }; - buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "Time Safari" */; + buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */; compatibilityVersion = "Xcode 8.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -141,13 +145,11 @@ Base, ); mainGroup = 504EC2FB1FED79650016851F; - packageReferences = ( - ); productRefGroup = 504EC3051FED79650016851F /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 504EC3031FED79650016851F /* Time Safari */, + 504EC3031FED79650016851F /* App */, ); }; /* End PBXProject section */ @@ -348,14 +350,12 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 12; DEVELOPMENT_TEAM = GM3FS5JQPH; INFOPLIST_FILE = App/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Time Safari"; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 0.4.4; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = app.timesafari; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -371,14 +371,12 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 12; DEVELOPMENT_TEAM = GM3FS5JQPH; INFOPLIST_FILE = App/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Time Safari"; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 0.4.4; PRODUCT_BUNDLE_IDENTIFIER = app.timesafari; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; @@ -390,7 +388,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "Time Safari" */ = { + 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */ = { isa = XCConfigurationList; buildConfigurations = ( 504EC3141FED79650016851F /* Debug */, @@ -399,7 +397,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "Time Safari" */ = { + 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */ = { isa = XCConfigurationList; buildConfigurations = ( 504EC3171FED79650016851F /* Debug */, diff --git a/ios/App/App.xcworkspace/contents.xcworkspacedata b/ios/App/App.xcworkspace/contents.xcworkspacedata index a0ad72ce..b301e824 100644 --- a/ios/App/App.xcworkspace/contents.xcworkspacedata +++ b/ios/App/App.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:App.xcodeproj"> diff --git a/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/ios/App/App/Info.plist b/ios/App/App/Info.plist index 0776c2e9..99bea7db 100644 --- a/ios/App/App/Info.plist +++ b/ios/App/App/Info.plist @@ -22,6 +22,10 @@ $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS + NSCameraUsageDescription + Upload photos and scan friends' QR codes + NSPhotoLibraryUsageDescription + Upload photos for gifts UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -45,15 +49,16 @@ UIViewControllerBasedStatusBarAppearance - UIFileSharingEnabled - - LSSupportsOpeningDocumentsInPlace - - UISupportsDocumentBrowser - - NSPhotoLibraryAddUsageDescription - This app needs access to save exported files to your photo library. - NSPhotoLibraryUsageDescription - This app needs access to save exported files to your photo library. - + + CFBundleURLTypes + + + CFBundleURLName + app.timesafari + CFBundleURLSchemes + + timesafari + + + diff --git a/ios/App/Podfile b/ios/App/Podfile index 14cdb5b7..3607f7e2 100644 --- a/ios/App/Podfile +++ b/ios/App/Podfile @@ -12,6 +12,10 @@ def capacitor_pods pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app' + pod 'CapacitorCamera', :path => '../../node_modules/@capacitor/camera' + pod 'CapacitorFilesystem', :path => '../../node_modules/@capacitor/filesystem' + pod 'CapacitorShare', :path => '../../node_modules/@capacitor/share' + pod 'CapawesomeCapacitorFilePicker', :path => '../../node_modules/@capawesome/capacitor-file-picker' end target 'App' do diff --git a/ios/App/Podfile.lock b/ios/App/Podfile.lock index c71514f8..2c00f4a7 100644 --- a/ios/App/Podfile.lock +++ b/ios/App/Podfile.lock @@ -1,28 +1,52 @@ PODS: - - Capacitor (6.2.0): + - Capacitor (6.2.1): - CapacitorCordova - CapacitorApp (6.0.2): - Capacitor - - CapacitorCordova (6.2.0) + - CapacitorCamera (6.1.2): + - Capacitor + - CapacitorCordova (6.2.1) + - CapacitorFilesystem (6.0.3): + - Capacitor + - CapacitorShare (6.0.3): + - Capacitor + - CapawesomeCapacitorFilePicker (6.2.0): + - Capacitor DEPENDENCIES: - "Capacitor (from `../../node_modules/@capacitor/ios`)" - "CapacitorApp (from `../../node_modules/@capacitor/app`)" + - "CapacitorCamera (from `../../node_modules/@capacitor/camera`)" - "CapacitorCordova (from `../../node_modules/@capacitor/ios`)" + - "CapacitorFilesystem (from `../../node_modules/@capacitor/filesystem`)" + - "CapacitorShare (from `../../node_modules/@capacitor/share`)" + - "CapawesomeCapacitorFilePicker (from `../../node_modules/@capawesome/capacitor-file-picker`)" EXTERNAL SOURCES: Capacitor: :path: "../../node_modules/@capacitor/ios" CapacitorApp: :path: "../../node_modules/@capacitor/app" + CapacitorCamera: + :path: "../../node_modules/@capacitor/camera" CapacitorCordova: :path: "../../node_modules/@capacitor/ios" + CapacitorFilesystem: + :path: "../../node_modules/@capacitor/filesystem" + CapacitorShare: + :path: "../../node_modules/@capacitor/share" + CapawesomeCapacitorFilePicker: + :path: "../../node_modules/@capawesome/capacitor-file-picker" SPEC CHECKSUMS: - Capacitor: 05d35014f4425b0740fc8776481f6a369ad071bf + Capacitor: c95400d761e376be9da6be5a05f226c0e865cebf CapacitorApp: e1e6b7d05e444d593ca16fd6d76f2b7c48b5aea7 - CapacitorCordova: b33e7f4aa4ed105dd43283acdd940964374a87d9 + CapacitorCamera: 9bc7b005d0e6f1d5f525b8137045b60cffffce79 + CapacitorCordova: 8d93e14982f440181be7304aa9559ca631d77fff + CapacitorFilesystem: 59270a63c60836248812671aa3b15df673fbaf74 + CapacitorShare: d2a742baec21c8f3b92b361a2fbd2401cdd8288e + CapawesomeCapacitorFilePicker: c40822f0a39f86855321943c7829d52bca7f01bd -PODFILE CHECKSUM: 4233f5c5f414604460ff96d372542c311b0fb7a8 +PODFILE CHECKSUM: 1e9280368fd410520414f5741bf8fdfe7847b965 COCOAPODS: 1.16.2 diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile deleted file mode 100644 index 889d28d3..00000000 --- a/ios/fastlane/Fastfile +++ /dev/null @@ -1,22 +0,0 @@ -default_platform(:ios) - -platform :ios do - desc "Build and deploy iOS app" - lane :beta do - build_ios_app( - scheme: "App", - workspace: "App.xcworkspace", - export_method: "app-store" - ) - upload_to_testflight - end - - lane :release do - build_ios_app( - scheme: "App", - workspace: "App.xcworkspace", - export_method: "app-store" - ) - upload_to_app_store - end -end diff --git a/scripts/test-ios.js b/scripts/test-ios.js index dcd7b157..f0106ed1 100644 --- a/scripts/test-ios.js +++ b/scripts/test-ios.js @@ -103,7 +103,7 @@ const cleanIosPlatform = async (log) => { // Get app name from package.json const packageJson = JSON.parse(readFileSync('package.json', 'utf8')); const appName = packageJson.name || 'App'; - const appId = packageJson.capacitor?.appId || 'io.ionic.starter'; + const appId = packageJson.build.appId || 'io.ionic.starter'; // Create a minimal capacitor config const capacitorConfig = ` @@ -467,12 +467,12 @@ const configureIosProject = async (log) => { // Build and test iOS project const buildAndTestIos = async (log, simulator) => { const simulatorName = simulator[0].name; - log('🏗️ Building iOS project...'); + log('🏗️ Building iOS project...', simulator[0]); execSync('cd ios/App && xcodebuild clean -workspace App.xcworkspace -scheme App', { stdio: 'inherit' }); log('✅ Xcode clean completed'); log(`🏗️ Building for simulator: ${simulatorName}`); - execSync(`cd ios/App && xcodebuild build -workspace App.xcworkspace -scheme App -destination "platform=iOS Simulator,name=${simulatorName}"`, { stdio: 'inherit' }); + execSync(`cd ios/App && xcodebuild build -workspace App.xcworkspace -scheme App -destination "platform=iOS Simulator,OS=17.2,name=${simulatorName}"`, { stdio: 'inherit' }); log('✅ Xcode build completed'); // Check if the project is configured for testing by querying the scheme capabilities