diff --git a/README.md b/README.md index 0f57517..69d91b7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,38 @@ -# Siro Project +# Siro Ecosystem 🚗📦 -Welcome to the Siro project. +Welcome to **Siro**, a comprehensive suite of applications built to power a modern, scalable, and fully integrated ride-hailing and service delivery ecosystem. + +Siro provides specialized solutions for every stakeholder in the transportation and delivery network, ensuring a seamless experience across all touchpoints. + +## 📱 Applications Included + +The Siro repository is a unified monorepo containing the following core applications: + +- **siro_rider**: The customer-facing application. Users can easily book rides, request services, track their driver in real-time, and manage their payments securely. +- **siro_driver**: The captain/driver application. Provides drivers with ride requests, real-time navigation, earnings tracking, and a built-in wallet system. +- **siro_admin**: The centralized control panel for system administrators. Monitor active rides, manage drivers and users, adjust pricing algorithms, and view comprehensive analytics. +- **siro_service**: Dedicated application for specialized service providers within the Siro network, facilitating efficient task management and service fulfillment. +- **backend**: The robust and scalable backend infrastructure that powers the entire Siro ecosystem, handling real-time socket connections, database operations, and secure API endpoints. + +## 🚀 Key Features + +* **Real-time Tracking**: Live location updates for riders and drivers powered by precise socket integrations. +* **Comprehensive Wallet System**: Built-in digital wallet for both users and captains to handle payments, promotional points, and automated cashouts. +* **Advanced Administrator Control**: Complete oversight over the platform's operations, user base, and financial metrics. +* **Multi-Service Capability**: Beyond traditional ride-hailing, Siro supports various service requests seamlessly integrated into the ecosystem. + +## 🛠 Tech Stack + +Siro is built utilizing modern frameworks and tools to ensure high performance and maintainability across both mobile and backend environments. +- **Frontend App**: Flutter (Dart) +- **Backend Infrastructure**: Scalable Server Environment +- **Payment Integration**: Secure, robust handling of dynamic budgets and digital wallets. + +## ⚙️ Setup & Deployment + +1. Make sure to run `flutter pub get` in each of the app directories to fetch dependencies. +2. Use the provided `./deploy.sh` script to quickly commit and push your changes to the remote repository. + +--- + +*Built with passion for a seamless transportation experience.* diff --git a/siro_driver/ios b/siro_driver/ios deleted file mode 160000 index b3d9fcd..0000000 --- a/siro_driver/ios +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b3d9fcd385161092da675a919217bee83c40cf06 diff --git a/siro_driver/ios/.gitignore b/siro_driver/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/siro_driver/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/siro_driver/ios/Flutter/AppFrameworkInfo.plist b/siro_driver/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..391a902 --- /dev/null +++ b/siro_driver/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/siro_driver/ios/Flutter/Debug.xcconfig b/siro_driver/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..ec97fc6 --- /dev/null +++ b/siro_driver/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/siro_driver/ios/Flutter/Release.xcconfig b/siro_driver/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..c4855bf --- /dev/null +++ b/siro_driver/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/siro_driver/ios/Podfile b/siro_driver/ios/Podfile new file mode 100644 index 0000000..bff061e --- /dev/null +++ b/siro_driver/ios/Podfile @@ -0,0 +1,48 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0' + # config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' + end + end +end diff --git a/siro_driver/ios/Podfile.lock b/siro_driver/ios/Podfile.lock new file mode 100644 index 0000000..9ee3c93 --- /dev/null +++ b/siro_driver/ios/Podfile.lock @@ -0,0 +1,542 @@ +PODS: + - AppAuth (2.0.0): + - AppAuth/Core (= 2.0.0) + - AppAuth/ExternalUserAgent (= 2.0.0) + - AppAuth/Core (2.0.0) + - AppAuth/ExternalUserAgent (2.0.0): + - AppAuth/Core + - AppCheckCore (11.2.0): + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) + - audio_session (0.0.1): + - Flutter + - battery_plus (1.0.0): + - Flutter + - connectivity_plus (0.0.1): + - Flutter + - device_info_plus (0.0.1): + - Flutter + - Firebase/Auth (12.9.0): + - Firebase/CoreOnly + - FirebaseAuth (~> 12.9.0) + - Firebase/CoreOnly (12.9.0): + - FirebaseCore (~> 12.9.0) + - Firebase/Messaging (12.9.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 12.9.0) + - firebase_auth (6.3.0): + - Firebase/Auth (= 12.9.0) + - firebase_core + - Flutter + - firebase_core (4.6.0): + - Firebase/CoreOnly (= 12.9.0) + - Flutter + - firebase_messaging (16.1.3): + - Firebase/Messaging (= 12.9.0) + - firebase_core + - Flutter + - FirebaseAppCheckInterop (12.9.0) + - FirebaseAuth (12.9.0): + - FirebaseAppCheckInterop (~> 12.9.0) + - FirebaseAuthInterop (~> 12.9.0) + - FirebaseCore (~> 12.9.0) + - FirebaseCoreExtension (~> 12.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.1) + - GoogleUtilities/Environment (~> 8.1) + - GTMSessionFetcher/Core (< 6.0, >= 3.4) + - RecaptchaInterop (~> 101.0) + - FirebaseAuthInterop (12.9.0) + - FirebaseCore (12.9.0): + - FirebaseCoreInternal (~> 12.9.0) + - GoogleUtilities/Environment (~> 8.1) + - GoogleUtilities/Logger (~> 8.1) + - FirebaseCoreExtension (12.9.0): + - FirebaseCore (~> 12.9.0) + - FirebaseCoreInternal (12.9.0): + - "GoogleUtilities/NSData+zlib (~> 8.1)" + - FirebaseInstallations (12.9.0): + - FirebaseCore (~> 12.9.0) + - GoogleUtilities/Environment (~> 8.1) + - GoogleUtilities/UserDefaults (~> 8.1) + - PromisesObjC (~> 2.4) + - FirebaseMessaging (12.9.0): + - FirebaseCore (~> 12.9.0) + - FirebaseInstallations (~> 12.9.0) + - GoogleDataTransport (~> 10.1) + - GoogleUtilities/AppDelegateSwizzler (~> 8.1) + - GoogleUtilities/Environment (~> 8.1) + - GoogleUtilities/Reachability (~> 8.1) + - GoogleUtilities/UserDefaults (~> 8.1) + - nanopb (~> 3.30910.0) + - Flutter (1.0.0) + - flutter_app_group_directory (0.0.1): + - Flutter + - flutter_background_service_ios (0.0.3): + - Flutter + - flutter_contacts (0.0.1): + - Flutter + - flutter_image_compress_common (1.0.0): + - Flutter + - Mantle + - SDWebImage + - SDWebImageWebPCoder + - flutter_inappwebview_ios (0.0.1): + - Flutter + - flutter_inappwebview_ios/Core (= 0.0.1) + - OrderedSet (~> 6.0.3) + - flutter_inappwebview_ios/Core (0.0.1): + - Flutter + - OrderedSet (~> 6.0.3) + - flutter_local_notifications (0.0.1): + - Flutter + - flutter_secure_storage_darwin (10.0.0): + - Flutter + - FlutterMacOS + - flutter_tts (0.0.1): + - Flutter + - flutter_web_browser (0.17.3): + - Flutter + - flutter_webrtc (1.4.0): + - Flutter + - WebRTC-SDK (= 144.7559.01) + - geolocator_apple (1.2.0): + - Flutter + - FlutterMacOS + - google_sign_in_ios (0.0.1): + - Flutter + - FlutterMacOS + - GoogleSignIn (~> 9.0) + - GTMSessionFetcher (>= 3.4.0) + - GoogleDataTransport (10.1.0): + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) + - GoogleSignIn (9.1.0): + - AppAuth (~> 2.0) + - AppCheckCore (~> 11.0) + - GTMAppAuth (~> 5.0) + - GTMSessionFetcher/Core (~> 3.3) + - GoogleUtilities/AppDelegateSwizzler (8.1.0): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Privacy + - GoogleUtilities/Environment (8.1.0): + - GoogleUtilities/Privacy + - GoogleUtilities/Logger (8.1.0): + - GoogleUtilities/Environment + - GoogleUtilities/Privacy + - GoogleUtilities/Network (8.1.0): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (8.1.0)": + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (8.1.0) + - GoogleUtilities/Reachability (8.1.0): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/UserDefaults (8.1.0): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GTMAppAuth (5.0.0): + - AppAuth/Core (~> 2.0) + - GTMSessionFetcher/Core (< 4.0, >= 3.3) + - GTMSessionFetcher (3.5.0): + - GTMSessionFetcher/Full (= 3.5.0) + - GTMSessionFetcher/Core (3.5.0) + - GTMSessionFetcher/Full (3.5.0): + - GTMSessionFetcher/Core + - image_cropper (0.0.5): + - Flutter + - TOCropViewController (~> 3.1.1) + - image_picker_ios (0.0.1): + - Flutter + - IOSSecuritySuite (1.9.11) + - jailbreak_root_detection (1.0.1): + - Flutter + - IOSSecuritySuite (~> 1.9.10) + - just_audio (0.0.1): + - Flutter + - FlutterMacOS + - libwebp (1.5.0): + - libwebp/demux (= 1.5.0) + - libwebp/mux (= 1.5.0) + - libwebp/sharpyuv (= 1.5.0) + - libwebp/webp (= 1.5.0) + - libwebp/demux (1.5.0): + - libwebp/webp + - libwebp/mux (1.5.0): + - libwebp/demux + - libwebp/sharpyuv (1.5.0) + - libwebp/webp (1.5.0): + - libwebp/sharpyuv + - live_activities (0.0.1): + - Flutter + - local_auth_darwin (0.0.1): + - Flutter + - FlutterMacOS + - location (0.0.1): + - Flutter + - Mantle (2.2.0): + - Mantle/extobjc (= 2.2.0) + - Mantle/extobjc (2.2.0) + - MapLibre (6.19.1) + - maplibre_gl (0.25.0): + - Flutter + - MapLibre (= 6.19.1) + - nanopb (3.30910.0): + - nanopb/decode (= 3.30910.0) + - nanopb/encode (= 3.30910.0) + - nanopb/decode (3.30910.0) + - nanopb/encode (3.30910.0) + - OrderedSet (6.0.3) + - package_info_plus (0.4.5): + - Flutter + - permission_handler_apple (9.3.0): + - Flutter + - PromisesObjC (2.4.0) + - quick_actions_ios (0.0.1): + - Flutter + - RecaptchaInterop (101.0.0) + - record_ios (1.2.0): + - Flutter + - SDWebImage (5.21.7): + - SDWebImage/Core (= 5.21.7) + - SDWebImage/Core (5.21.7) + - SDWebImageWebPCoder (0.15.0): + - libwebp (~> 1.0) + - SDWebImage/Core (~> 5.17) + - share_plus (0.0.1): + - Flutter + - sign_in_with_apple (0.0.1): + - Flutter + - sqflite_darwin (0.0.4): + - Flutter + - FlutterMacOS + - Stripe (25.6.4): + - StripeApplePay (= 25.6.4) + - StripeCore (= 25.6.4) + - StripeIssuing (= 25.6.4) + - StripePayments (= 25.6.4) + - StripePaymentsUI (= 25.6.4) + - StripeUICore (= 25.6.4) + - stripe_ios (0.0.1): + - Flutter + - Stripe (~> 25.6.0) + - stripe_ios/stripe_ios (= 0.0.1) + - stripe_ios/stripe_objc (= 0.0.1) + - StripeApplePay (~> 25.6.0) + - StripeFinancialConnections (~> 25.6.0) + - StripePayments (~> 25.6.0) + - StripePaymentSheet (~> 25.6.0) + - StripePaymentsUI (~> 25.6.0) + - stripe_ios/stripe_ios (0.0.1): + - Flutter + - Stripe (~> 25.6.0) + - stripe_ios/stripe_objc + - StripeApplePay (~> 25.6.0) + - StripeFinancialConnections (~> 25.6.0) + - StripePayments (~> 25.6.0) + - StripePaymentSheet (~> 25.6.0) + - StripePaymentsUI (~> 25.6.0) + - stripe_ios/stripe_objc (0.0.1): + - Flutter + - Stripe (~> 25.6.0) + - StripeApplePay (~> 25.6.0) + - StripeFinancialConnections (~> 25.6.0) + - StripePayments (~> 25.6.0) + - StripePaymentSheet (~> 25.6.0) + - StripePaymentsUI (~> 25.6.0) + - StripeApplePay (25.6.4): + - StripeCore (= 25.6.4) + - StripeCore (25.6.4) + - StripeFinancialConnections (25.6.4): + - StripeCore (= 25.6.4) + - StripeUICore (= 25.6.4) + - StripeIssuing (25.6.4): + - StripeCore (= 25.6.4) + - StripePayments (= 25.6.4) + - StripePaymentsUI (= 25.6.4) + - StripePayments (25.6.4): + - StripeCore (= 25.6.4) + - StripePayments/Stripe3DS2 (= 25.6.4) + - StripePayments/Stripe3DS2 (25.6.4): + - StripeCore (= 25.6.4) + - StripePaymentSheet (25.6.4): + - StripeApplePay (= 25.6.4) + - StripeCore (= 25.6.4) + - StripePayments (= 25.6.4) + - StripePaymentsUI (= 25.6.4) + - StripePaymentsUI (25.6.4): + - StripeCore (= 25.6.4) + - StripePayments (= 25.6.4) + - StripeUICore (= 25.6.4) + - StripeUICore (25.6.4): + - StripeCore (= 25.6.4) + - TOCropViewController (3.1.2) + - url_launcher_ios (0.0.1): + - Flutter + - vibration (3.0.0): + - Flutter + - video_player_avfoundation (0.0.1): + - Flutter + - FlutterMacOS + - wakelock_plus (0.0.1): + - Flutter + - WebRTC-SDK (144.7559.01) + - webview_flutter_wkwebview (0.0.1): + - Flutter + - FlutterMacOS + +DEPENDENCIES: + - audio_session (from `.symlinks/plugins/audio_session/ios`) + - battery_plus (from `.symlinks/plugins/battery_plus/ios`) + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) + - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) + - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) + - Flutter (from `Flutter`) + - flutter_app_group_directory (from `.symlinks/plugins/flutter_app_group_directory/ios`) + - flutter_background_service_ios (from `.symlinks/plugins/flutter_background_service_ios/ios`) + - flutter_contacts (from `.symlinks/plugins/flutter_contacts/ios`) + - flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`) + - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) + - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) + - flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`) + - flutter_tts (from `.symlinks/plugins/flutter_tts/ios`) + - flutter_web_browser (from `.symlinks/plugins/flutter_web_browser/ios`) + - flutter_webrtc (from `.symlinks/plugins/flutter_webrtc/ios`) + - geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`) + - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`) + - image_cropper (from `.symlinks/plugins/image_cropper/ios`) + - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) + - jailbreak_root_detection (from `.symlinks/plugins/jailbreak_root_detection/ios`) + - just_audio (from `.symlinks/plugins/just_audio/darwin`) + - live_activities (from `.symlinks/plugins/live_activities/ios`) + - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) + - location (from `.symlinks/plugins/location/ios`) + - maplibre_gl (from `.symlinks/plugins/maplibre_gl/ios`) + - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`) + - record_ios (from `.symlinks/plugins/record_ios/ios`) + - share_plus (from `.symlinks/plugins/share_plus/ios`) + - sign_in_with_apple (from `.symlinks/plugins/sign_in_with_apple/ios`) + - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) + - stripe_ios (from `.symlinks/plugins/stripe_ios/ios`) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + - vibration (from `.symlinks/plugins/vibration/ios`) + - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) + - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) + - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`) + +SPEC REPOS: + trunk: + - AppAuth + - AppCheckCore + - Firebase + - FirebaseAppCheckInterop + - FirebaseAuth + - FirebaseAuthInterop + - FirebaseCore + - FirebaseCoreExtension + - FirebaseCoreInternal + - FirebaseInstallations + - FirebaseMessaging + - GoogleDataTransport + - GoogleSignIn + - GoogleUtilities + - GTMAppAuth + - GTMSessionFetcher + - IOSSecuritySuite + - libwebp + - Mantle + - MapLibre + - nanopb + - OrderedSet + - PromisesObjC + - RecaptchaInterop + - SDWebImage + - SDWebImageWebPCoder + - Stripe + - StripeApplePay + - StripeCore + - StripeFinancialConnections + - StripeIssuing + - StripePayments + - StripePaymentSheet + - StripePaymentsUI + - StripeUICore + - TOCropViewController + - WebRTC-SDK + +EXTERNAL SOURCES: + audio_session: + :path: ".symlinks/plugins/audio_session/ios" + battery_plus: + :path: ".symlinks/plugins/battery_plus/ios" + connectivity_plus: + :path: ".symlinks/plugins/connectivity_plus/ios" + device_info_plus: + :path: ".symlinks/plugins/device_info_plus/ios" + firebase_auth: + :path: ".symlinks/plugins/firebase_auth/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + firebase_messaging: + :path: ".symlinks/plugins/firebase_messaging/ios" + Flutter: + :path: Flutter + flutter_app_group_directory: + :path: ".symlinks/plugins/flutter_app_group_directory/ios" + flutter_background_service_ios: + :path: ".symlinks/plugins/flutter_background_service_ios/ios" + flutter_contacts: + :path: ".symlinks/plugins/flutter_contacts/ios" + flutter_image_compress_common: + :path: ".symlinks/plugins/flutter_image_compress_common/ios" + flutter_inappwebview_ios: + :path: ".symlinks/plugins/flutter_inappwebview_ios/ios" + flutter_local_notifications: + :path: ".symlinks/plugins/flutter_local_notifications/ios" + flutter_secure_storage_darwin: + :path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin" + flutter_tts: + :path: ".symlinks/plugins/flutter_tts/ios" + flutter_web_browser: + :path: ".symlinks/plugins/flutter_web_browser/ios" + flutter_webrtc: + :path: ".symlinks/plugins/flutter_webrtc/ios" + geolocator_apple: + :path: ".symlinks/plugins/geolocator_apple/darwin" + google_sign_in_ios: + :path: ".symlinks/plugins/google_sign_in_ios/darwin" + image_cropper: + :path: ".symlinks/plugins/image_cropper/ios" + image_picker_ios: + :path: ".symlinks/plugins/image_picker_ios/ios" + jailbreak_root_detection: + :path: ".symlinks/plugins/jailbreak_root_detection/ios" + just_audio: + :path: ".symlinks/plugins/just_audio/darwin" + live_activities: + :path: ".symlinks/plugins/live_activities/ios" + local_auth_darwin: + :path: ".symlinks/plugins/local_auth_darwin/darwin" + location: + :path: ".symlinks/plugins/location/ios" + maplibre_gl: + :path: ".symlinks/plugins/maplibre_gl/ios" + package_info_plus: + :path: ".symlinks/plugins/package_info_plus/ios" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + quick_actions_ios: + :path: ".symlinks/plugins/quick_actions_ios/ios" + record_ios: + :path: ".symlinks/plugins/record_ios/ios" + share_plus: + :path: ".symlinks/plugins/share_plus/ios" + sign_in_with_apple: + :path: ".symlinks/plugins/sign_in_with_apple/ios" + sqflite_darwin: + :path: ".symlinks/plugins/sqflite_darwin/darwin" + stripe_ios: + :path: ".symlinks/plugins/stripe_ios/ios" + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + vibration: + :path: ".symlinks/plugins/vibration/ios" + video_player_avfoundation: + :path: ".symlinks/plugins/video_player_avfoundation/darwin" + wakelock_plus: + :path: ".symlinks/plugins/wakelock_plus/ios" + webview_flutter_wkwebview: + :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" + +SPEC CHECKSUMS: + AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063 + AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f + audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0 + battery_plus: b42253f6d2dde71712f8c36fef456d99121c5977 + connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd + device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe + Firebase: 065f2bb395062046623036d8e6dc857bc2521d56 + firebase_auth: 323c64eedef33fc3fdf438d16c29d2624b2ce4f4 + firebase_core: 8e6f58412ca227827c366b92e7cee047a2148c60 + firebase_messaging: c3aa897e0d40109cfb7927c40dc0dea799863f3b + FirebaseAppCheckInterop: 4bade10286cc977e516f75d2d8312cbdfa534789 + FirebaseAuth: 3a39f6436c21ebfd7919b698228b4f89ff94c23b + FirebaseAuthInterop: f8f6ff72dc24621906497fbe5cf3c42ee815e59c + FirebaseCore: 428912f751178b06bef0a1793effeb4a5e09a9b8 + FirebaseCoreExtension: e911052d59cd0da237a45d706fc0f81654f035c1 + FirebaseCoreInternal: b321eafae5362113bc182956fafc9922cfc77b72 + FirebaseInstallations: 7b64ffd006032b2b019a59b803858df5112d9eaa + FirebaseMessaging: 7d6cdbff969127c4151c824fe432f0e301210f15 + Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 + flutter_app_group_directory: 55b5362007d1c0cb45dc1dd1e94f67d615f45a6b + flutter_background_service_ios: 00d31bdff7b4bfe06d32375df358abe0329cf87e + flutter_contacts: 5383945387e7ca37cf963d4be57c21f2fc15ca9f + flutter_image_compress_common: 1697a328fd72bfb335507c6bca1a65fa5ad87df1 + flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 + flutter_local_notifications: 643a3eda1ce1c0599413ca31672536d423dee214 + flutter_secure_storage_darwin: acdb3f316ed05a3e68f856e0353b133eec373a23 + flutter_tts: 35ac3c7d42412733e795ea96ad2d7e05d0a75113 + flutter_web_browser: 68b27d2c4773b059cef19e12c890cb204518d3c3 + flutter_webrtc: ec91d94b484ad49cf191ef93413f64a40ffd3b4c + geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e + google_sign_in_ios: 000870aa06da9b28d1d0bf7ef70ff0213059dd28 + GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 + GoogleSignIn: fcee2257188d5eda57a5e2b6a715550ffff9206d + GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 + GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238 + GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 + image_cropper: e405d3e44183f8e8edbec2e49b01ff9c819c7ac8 + image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326 + IOSSecuritySuite: b51056d5411aee567153ca86ce7f6edfdc5d2654 + jailbreak_root_detection: 9201e1dfd51dc23069cbfb8d4f4a2d18305170bf + just_audio: 4e391f57b79cad2b0674030a00453ca5ce817eed + libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 + live_activities: 4dfa736d0736e1c77866a2f9c056a76513cc9e7b + local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb + location: 155caecf9da4f280ab5fe4a55f94ceccfab838f8 + Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d + MapLibre: 7f24faba45439f80ccb0f83393c29fa32cb81952 + maplibre_gl: a2114567cbd1065866614fbd34dfb75ab782aaa2 + nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 + OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 + package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 + permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + quick_actions_ios: 500fcc11711d9f646739093395c4ae8eec25f779 + RecaptchaInterop: 11e0b637842dfb48308d242afc3f448062325aba + record_ios: 412daca2350b228e698fffcd08f1f94ceb1e3844 + SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf + SDWebImageWebPCoder: 0e06e365080397465cc73a7a9b472d8a3bd0f377 + share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a + sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418 + sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 + Stripe: 7cb1009980324c6c16b6a4af5843b8ef54549065 + stripe_ios: eebee52319de946cc0da2d6ddc98a89b04cec95e + StripeApplePay: 91000b0927f53c58a2a1f829a4ee246d508bd1c4 + StripeCore: f6ca805768a7807ec014c0523cd99a3d16d21d6b + StripeFinancialConnections: 2cb9bc81468599d1b4b41178f49879a65c8ac52e + StripeIssuing: 7ffde774af77d713aff204858fcf765eeb3677d3 + StripePayments: 4de3976a0d5f626cfc8ad4e010aff1cbda8dc1e5 + StripePaymentSheet: 29443db7e8635e2d3a00758f1ecebbb17a24ff19 + StripePaymentsUI: 37551e684263db449368ccac27438947e1b45f84 + StripeUICore: f1e43a68ab1e1428f8738df821eb64efac1d871a + TOCropViewController: a916930c465b5d9445a74d95e0c0da931771b4df + url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b + vibration: ca8104a8875b9c493e15b21b04e456befd0ff6eb + video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a + wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 + WebRTC-SDK: ab9b5319e458c2bfebdc92b3600740da35d5630d + webview_flutter_wkwebview: 8ebf4fded22593026f7dbff1fbff31ea98573c8d + +PODFILE CHECKSUM: d5cc456343636170778b0bcb448cd4e9f40d8e6f + +COCOAPODS: 1.16.2 diff --git a/siro_driver/ios/README.md b/siro_driver/ios/README.md new file mode 100644 index 0000000..94f66f3 --- /dev/null +++ b/siro_driver/ios/README.md @@ -0,0 +1 @@ +# intaleq-driver diff --git a/siro_driver/ios/Runner.xcodeproj/project.pbxproj b/siro_driver/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7790da1 --- /dev/null +++ b/siro_driver/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,778 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + 97FFC0E3F6ED9DE482A911F9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E837B3D2243DF7DD4E4580F /* Pods_Runner.framework */; }; + 982237415CE12B509DF5B4ED /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30FB12AB7B0796A93BE748B0 /* Pods_RunnerTests.framework */; }; + C68143682E343ABC00901D9F /* JailbreakDetection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C68143672E343ABC00901D9F /* JailbreakDetection.swift */; }; + C681436A2E343AE700901D9F /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C68143692E343AE700901D9F /* Constants.swift */; }; + C681436F2E343C4C00901D9F /* SecurityChecks.m in Sources */ = {isa = PBXBuildFile; fileRef = C681436E2E343C4C00901D9F /* SecurityChecks.m */; }; + C6AC3CBE2E36C87F00614843 /* Config.plist in Resources */ = {isa = PBXBuildFile; fileRef = C6AC3CBD2E36C87F00614843 /* Config.plist */; }; + CB82E4D132BD3B246D9B13C5 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4B02C53E5321AAE5DCD2EBE9 /* GoogleService-Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1E837B3D2243DF7DD4E4580F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 30FB12AB7B0796A93BE748B0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3AB73A17478F7A8CDEBF155B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3BD1563DAF2FE1050D8F5FB4 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 4B02C53E5321AAE5DCD2EBE9 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; + 5568D6A57AF507D2D1664B2F /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 8788CCFC594357A3F6578EA4 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 88463B58C5E91CEF8C96E9F0 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A9AFBACCAFC2A0A6E6A5D66E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + C68143662E342FA600901D9F /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + C68143672E343ABC00901D9F /* JailbreakDetection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JailbreakDetection.swift; sourceTree = ""; }; + C68143692E343AE700901D9F /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + C681436B2E343BA600901D9F /* SecurityChecks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SecurityChecks.h; sourceTree = ""; }; + C681436E2E343C4C00901D9F /* SecurityChecks.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SecurityChecks.m; sourceTree = ""; }; + C6AC3CBD2E36C87F00614843 /* Config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Config.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 97FFC0E3F6ED9DE482A911F9 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BC22CD0220D2E219AEC87B56 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 982237415CE12B509DF5B4ED /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08732C80D7D3819679122DFB /* Pods */ = { + isa = PBXGroup; + children = ( + 88463B58C5E91CEF8C96E9F0 /* Pods-Runner.debug.xcconfig */, + A9AFBACCAFC2A0A6E6A5D66E /* Pods-Runner.release.xcconfig */, + 3AB73A17478F7A8CDEBF155B /* Pods-Runner.profile.xcconfig */, + 5568D6A57AF507D2D1664B2F /* Pods-RunnerTests.debug.xcconfig */, + 3BD1563DAF2FE1050D8F5FB4 /* Pods-RunnerTests.release.xcconfig */, + 8788CCFC594357A3F6578EA4 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 67687A1C1F41FE82B7CCB370 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1E837B3D2243DF7DD4E4580F /* Pods_Runner.framework */, + 30FB12AB7B0796A93BE748B0 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 4B02C53E5321AAE5DCD2EBE9 /* GoogleService-Info.plist */, + 08732C80D7D3819679122DFB /* Pods */, + 67687A1C1F41FE82B7CCB370 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + C68143662E342FA600901D9F /* Runner.entitlements */, + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + C68143672E343ABC00901D9F /* JailbreakDetection.swift */, + C68143692E343AE700901D9F /* Constants.swift */, + C681436B2E343BA600901D9F /* SecurityChecks.h */, + C681436E2E343C4C00901D9F /* SecurityChecks.m */, + C6AC3CBD2E36C87F00614843 /* Config.plist */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 5CF14E96E9F741F5A71480D4 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + BC22CD0220D2E219AEC87B56 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + EA940B940A187D77EB8F0D5E /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + BA8B63AF5A0E345284009AAA /* [CP] Embed Pods Frameworks */, + 196F83012B44840840FB3E09 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + C6AC3CBE2E36C87F00614843 /* Config.plist in Resources */, + CB82E4D132BD3B246D9B13C5 /* GoogleService-Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 196F83012B44840840FB3E09 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 5CF14E96E9F741F5A71480D4 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + BA8B63AF5A0E345284009AAA /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + EA940B940A187D77EB8F0D5E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C68143682E343ABC00901D9F /* JailbreakDetection.swift in Sources */, + C681436F2E343C4C00901D9F /* SecurityChecks.m in Sources */, + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + C681436A2E343AE700901D9F /* Constants.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 63CVT8G5P8; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.intaleq-driver"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5568D6A57AF507D2D1664B2F /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.intaleqDriver.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3BD1563DAF2FE1050D8F5FB4 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.intaleqDriver.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8788CCFC594357A3F6578EA4 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.intaleqDriver.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 63CVT8G5P8; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.intaleq-driver"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 63CVT8G5P8; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.intaleq-driver"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/siro_driver/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/siro_driver/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/siro_driver/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..e3773d4 --- /dev/null +++ b/siro_driver/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/siro_driver/ios/Runner.xcworkspace/contents.xcworkspacedata b/siro_driver/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/siro_driver/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/siro_driver/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/siro_driver/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/siro_driver/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/siro_driver/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/siro_driver/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/siro_driver/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/siro_driver/ios/Runner/AppDelegate.swift b/siro_driver/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..9e54888 --- /dev/null +++ b/siro_driver/ios/Runner/AppDelegate.swift @@ -0,0 +1,145 @@ +import UIKit +import Flutter +import FirebaseCore + +import CoreLocation + +@main +@objc class AppDelegate: FlutterAppDelegate { + + let locationManager = CLLocationManager() + + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + + + + // Now continue with the rest of the app initialization. + FirebaseApp.configure() + GeneratedPluginRegistrant.register(with: self) + + // التأكد من أن الجهاز غير مخترق قبل تشغيل التطبيق + if SecurityChecks.isDeviceCompromised() { + showSecurityAlert() + return false + } + + // تهيئة قنوات الاتصال مع Flutter + setupMethodChannel() + + // ضبط مدير الموقع لمتابعة تغييرات الأذونات + locationManager.delegate = self + locationManager.requestWhenInUseAuthorization() + + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + + // MARK: - تهيئة القناة بين Swift و Flutter + func setupMethodChannel() { + guard let controller = window?.rootViewController as? FlutterViewController else { + return + } + + let channel = FlutterMethodChannel(name: "com.siro.siro_driver/security", + binaryMessenger: controller.binaryMessenger) + channel.setMethodCallHandler { call, result in + switch call.method { + case "isNativeRooted": + result(SecurityChecks.isDeviceCompromised()) + default: + result(FlutterMethodNotImplemented) + } + } + } + + // MARK: - عرض تنبيه عند اكتشاف جهاز مخترق + func showSecurityAlert() { + guard let rootVC = UIApplication.shared.keyWindow?.rootViewController else { + exit(0) + } + + let alert = UIAlertController( + title: "Security Warning".localized, + message: "Compromised device detected. Exiting.".localized, + preferredStyle: .alert + ) + + alert.addAction(UIAlertAction(title: "OK".localized, style: .destructive) { _ in + self.obfuscatedExit() + }) + + if #available(iOS 15.0, *) { + alert.popoverPresentationController?.sourceView = rootVC.view + alert.popoverPresentationController?.sourceRect = CGRect(x: rootVC.view.bounds.midX, y: rootVC.view.bounds.midY, width: 0, height: 0) + alert.popoverPresentationController?.permittedArrowDirections = [] + alert.presentationController?.delegate = self + + if let presentationController = alert.presentationController as? UISheetPresentationController { + presentationController.detents = [.medium()] + presentationController.preferredCornerRadius = 20 + presentationController.prefersEdgeAttachedInCompactHeight = true + presentationController.prefersGrabberVisible = false + } + } + + rootVC.present(alert, animated: true, completion: nil) + } + + // MARK: - إخفاء عملية الخروج بطريقة مشفرة + func obfuscatedExit() { + let selector = NSSelectorFromString(String(format: "%@%@", "ex", "it:")) + if responds(to: selector) { + perform(selector, with: 0) + } + } + + +} + +// MARK: - التعامل مع أذونات الموقع بطريقة آمنة +extension AppDelegate: CLLocationManagerDelegate { + func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) { + if #available(iOS 14.0, *) { + let status = manager.authorizationStatus + switch status { + case .authorizedWhenInUse, .authorizedAlways: + print("Authorization granted") + case .denied, .restricted: + print("Authorization denied") + case .notDetermined: + manager.requestWhenInUseAuthorization() + @unknown default: + break + } + } else { + // لنظام iOS 13 وما قبله، نستخدم الطريقة القديمة + let status = CLLocationManager.authorizationStatus() + switch status { + case .authorizedWhenInUse, .authorizedAlways: + print("Authorization granted") + case .denied, .restricted: + print("Authorization denied") + case .notDetermined: + manager.requestWhenInUseAuthorization() + @unknown default: + break + } + } + } +} + +// MARK: - منع إغلاق التنبيهات الأمنية +extension AppDelegate: UIAdaptivePresentationControllerDelegate { + func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool { + return false + } +} + +// MARK: - دعم الترجمة للنصوص +extension String { + var localized: String { + return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "") + } +} diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 0000000..ab72d10 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000..c9417c1 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 0000000..9ba42fe Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 0000000..6697c04 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 0000000..d722206 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 0000000..1769fed Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 0000000..ab65536 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png new file mode 100644 index 0000000..d7d286f Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 0000000..62616ad Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 0000000..211f5d4 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 0000000..fdbc237 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png new file mode 100644 index 0000000..2ccbcd9 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 0000000..64d5a43 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png new file mode 100644 index 0000000..f080356 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png new file mode 100644 index 0000000..417944d Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 0000000..ce44407 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png new file mode 100644 index 0000000..630dffd Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 0000000..38d001b Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 0000000..86eec95 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 0000000..52b37ec Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png new file mode 100644 index 0000000..de1d829 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 0000000..12200c1 Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 0000000..9336a6a Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 0000000..3d9ae6f Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png new file mode 100644 index 0000000..934d30c Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..5c82812 --- /dev/null +++ b/siro_driver/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1 @@ +{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"128x128","expected-size":"128","filename":"128.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"256x256","expected-size":"256","filename":"256.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"128x128","expected-size":"256","filename":"256.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"256x256","expected-size":"512","filename":"512.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"32x32","expected-size":"32","filename":"32.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"512x512","expected-size":"512","filename":"512.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"16x16","expected-size":"16","filename":"16.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"1x"},{"size":"16x16","expected-size":"32","filename":"32.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"32x32","expected-size":"64","filename":"64.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"},{"size":"512x512","expected-size":"1024","filename":"1024.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"mac","scale":"2x"}]} \ No newline at end of file diff --git a/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/siro_driver/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/siro_driver/ios/Runner/Base.lproj/LaunchScreen.storyboard b/siro_driver/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/siro_driver/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/siro_driver/ios/Runner/Base.lproj/Main.storyboard b/siro_driver/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/siro_driver/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/siro_driver/ios/Runner/Constants.swift b/siro_driver/ios/Runner/Constants.swift new file mode 100644 index 0000000..eace5da --- /dev/null +++ b/siro_driver/ios/Runner/Constants.swift @@ -0,0 +1,13 @@ +// +// Constants.swift +// Runner +// +// Created by Hamza Aleghwairyeen on 26/07/2025. +// + +import Foundation + + +struct Constants { + static let googleMapsAPIKey = "AIzaSyDzGO9a-1IDMLD2FxhmOO9ONL1gMssFa9g" +} diff --git a/siro_driver/ios/Runner/GoogleService-Info.plist b/siro_driver/ios/Runner/GoogleService-Info.plist new file mode 100644 index 0000000..67bca40 --- /dev/null +++ b/siro_driver/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,30 @@ + + + + + API_KEY + AIzaSyDk6x6KZUY0IQtxoCMXX0F7N_yik8O19eA + GCM_SENDER_ID + 825988584191 + PLIST_VERSION + 1 + BUNDLE_ID + com.siro.driver + PROJECT_ID + siro-a6957 + STORAGE_BUCKET + siro-a6957.firebasestorage.app + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:825988584191:ios:4002b88e618f0c4e1632ca + + \ No newline at end of file diff --git a/siro_driver/ios/Runner/Info.plist b/siro_driver/ios/Runner/Info.plist new file mode 100644 index 0000000..07b06c6 --- /dev/null +++ b/siro_driver/ios/Runner/Info.plist @@ -0,0 +1,110 @@ + + + + + BGTaskSchedulerPermittedIdentifiers + + $(PRODUCT_BUNDLE_IDENTIFIER) + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Siro Driver + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + siro_driver + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0.133 + CFBundleSignature + ???? + CFBundleVersion + 33 + FirebaseAppDelegateProxyEnabled + NO + GMSApiKey + YOUR_API_KEY + LSApplicationCategoryType + + LSApplicationQueriesSchemes + + googlechromes + comgooglemaps + + LSMinimumSystemVersion + 12.0 + LSRequiresIPhoneOS + + NSBonjourServices + + _dartVmService._tcp + _dartobservatory._tcp + + NSCameraUsageDescription + This app requires access to your camera in order to scan QR codes and capture images + for uploading and access to connect to a call. + NSContactsUsageDescription + This app requires contacts access to function properly. + NSFaceIDUsageDescription + Use Face ID to securely authenticate payment accounts. + NSHumanReadableCopyright + + NSLocalNetworkUsageDescription + Allow debugging over the local network. + NSLocationAlwaysAndWhenInUseUsageDescription + This app needs access to your location to provide you with the best ride experience. + Your location data will be used to find the nearest available cars and connect you with + the closest captain for efficient and convenient rides. + NSLocationAlwaysUsageDescription + This app needs access to location. + NSLocationWhenInUseUsageDescription + This app needs access to your location to provide you with the best ride experience. + Your location data will be used to find the nearest available cars and connect you with + the closest captain for efficient and convenient rides. + NSMicrophoneUsageDescription + This app requires access to your microphone to record audio, allowing you to add + voice recordings to your photos and videos and access to connect to a call. + NSPhotoLibraryUsageDescription + This app needs access to your photo library to allow you to upload and manage + images. + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + fetch + location + remote-notification + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/siro_driver/ios/Runner/JailbreakDetection.swift b/siro_driver/ios/Runner/JailbreakDetection.swift new file mode 100644 index 0000000..82a248b --- /dev/null +++ b/siro_driver/ios/Runner/JailbreakDetection.swift @@ -0,0 +1,27 @@ +// +// JailbreakDetection.swift +// Runner +// +// Created by Hamza Aleghwairyeen on 26/07/2025. +// + + + +import Foundation + +class JailbreakDetection { + static func isJailbroken() -> Bool { + let paths = [ + "/Applications/Cydia.app", + "/Library/MobileSubstrate/MobileSubstrate.dylib", + "/usr/sbin/sshd", + "/etc/apt" + ] + for path in paths { + if FileManager.default.fileExists(atPath: path) { + return true + } + } + return false + } +} diff --git a/siro_driver/ios/Runner/Runner-Bridging-Header.h b/siro_driver/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..2dd4564 --- /dev/null +++ b/siro_driver/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1,2 @@ +#import "GeneratedPluginRegistrant.h" +#import "SecurityChecks.h" diff --git a/siro_driver/ios/Runner/Runner.entitlements b/siro_driver/ios/Runner/Runner.entitlements new file mode 100644 index 0000000..903def2 --- /dev/null +++ b/siro_driver/ios/Runner/Runner.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/siro_driver/ios/Runner/SecurityChecks.h b/siro_driver/ios/Runner/SecurityChecks.h new file mode 100644 index 0000000..f9e41ca --- /dev/null +++ b/siro_driver/ios/Runner/SecurityChecks.h @@ -0,0 +1,20 @@ +// +// SecurityChecks.h +// Runner +// +// Created by Hamza Aleghwairyeen on 26/07/2025. +// + +#ifndef SecurityChecks_h +#define SecurityChecks_h + + +#endif /* SecurityChecks_h */ +#import +#import // Import UIKit + +@interface SecurityChecks : NSObject + ++ (BOOL)isDeviceCompromised; // Combined check + +@end diff --git a/siro_driver/ios/Runner/SecurityChecks.m b/siro_driver/ios/Runner/SecurityChecks.m new file mode 100644 index 0000000..b76a711 --- /dev/null +++ b/siro_driver/ios/Runner/SecurityChecks.m @@ -0,0 +1,198 @@ +// +// SecurityChecks.m +// Runner +// +// Created by Hamza Aleghwairyeen on 26/07/2025. +// + +#import + + + + +#import "SecurityChecks.h" +#import +#include +#import +#include // For _dyld_image_count and _dyld_get_image_name +#include // for fork() +#include //for socket, connect +#include // for sockaddr_in +#include // for inet_pton + +@implementation SecurityChecks + ++ (BOOL)isDeviceJailbroken { + // (Same jailbreak checks as before - from previous responses) + // 1. Check for common jailbreak files + NSArray *jailbreakPaths = @[ + @"/Applications/Cydia.app", +// #if !TARGET_IPHONE_SIMULATOR +// @"/bin/bash", +// #endif + @"/Library/MobileSubstrate/MobileSubstrate.dylib", + @"/bin/bash", + @"/usr/sbin/sshd", + @"/etc/apt", + @"/private/var/lib/apt/", + @"/private/var/tmp/cydia.log", + ]; + + for (NSString *path in jailbreakPaths) { + if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { + NSLog(@"Jailbreak file detected: %@", path); + return YES; + } + } + + // 2. Check if we can write outside the sandbox (a strong indicator) + NSError *error = nil; + NSString *testPath = @"/private/jailbreaktest.txt"; + [@"test" writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:&error]; + + if (!error) { + // If we can write, it's jailbroken. Remove the file immediately. + [[NSFileManager defaultManager] removeItemAtPath:testPath error:nil]; + NSLog(@"Sandbox write test indicates jailbreak."); + return YES; + } + //3: Check for existence of the symbolic link /Applications. + struct stat s; + if (lstat("/Applications", &s) == 0) { + if (S_ISLNK(s.st_mode)) { + NSLog(@"Symbolic link /Applications exists, jailbroken"); + return YES; + } + } + + //4:Check for dyld Libraries + uint32_t count = _dyld_image_count(); + for (uint32_t i = 0 ; i < count ; ++i) { + const char *dyld = _dyld_get_image_name(i); + if (strstr(dyld, "MobileSubstrate") != NULL || strstr(dyld, "libcycript") != NULL) { + NSLog(@"Suspicious dyld library found: %s", dyld); + return YES; + } + } + + //5 Check if fork() is available. Sandboxed apps should not be able to call fork(). + #if !TARGET_IPHONE_SIMULATOR // Don't run this on the simulator + int pid = fork(); + if (pid == 0) + { + //in child, exit immediately to avoid crashing. + exit(0); + } else if (pid > 0) + { + NSLog(@"Fork available. Likely jailbroken."); + return YES; // Fork succeeded; likely jailbroken + } + #endif + + return NO; // No jailbreak indicators found +} ++ (BOOL)isDebuggerAttached { + int mib[4]; + struct kinfo_proc info; + size_t size = sizeof(info); + + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = getpid(); + + sysctl(mib, 4, &info, &size, NULL, 0); + + return (info.kp_proc.p_flag & P_TRACED) != 0; +} + +// Check for Frida's default port ++ (BOOL)isFridaListeningOnDefaultPort { + int sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock == -1) { + return NO; // Couldn't create socket + } + + struct sockaddr_in sa; + memset(&sa, 0, sizeof(sa)); + sa.sin_family = AF_INET; + sa.sin_port = htons(27042); // Default Frida port + inet_pton(AF_INET, "127.0.0.1", &sa.sin_addr); + + if (connect(sock, (struct sockaddr *)&sa, sizeof(sa)) != -1) { + NSLog(@"Frida default port (27042) is open."); + close(sock); + return YES; + } + + close(sock); + return NO; +} + + ++ (BOOL)isFridaDetected { + int name[] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0 }; + size_t length; + struct kinfo_proc *procs, *proc; + + sysctl(name, 3, NULL, &length, NULL, 0); + procs = malloc(length); + sysctl(name, 3, procs, &length, NULL, 0); + + for (proc = procs; (char *)proc < (char *)procs + length; proc++) { + if (strstr(proc->kp_proc.p_comm, "frida") != NULL) { + free(procs); + return YES; + } + } + + free(procs); + return NO; +} +// Check for loaded dylibs that indicate Frida ++(BOOL) checkForFridaDylib{ + uint32_t count = _dyld_image_count(); + for (uint32_t i = 0 ; i < count ; ++i) { + const char *dyld = _dyld_get_image_name(i); + if (strstr(dyld, "FridaGadget") != NULL) { // Look for FridaGadget + NSLog(@"FridaGadget dylib found: %s", dyld); + return YES; + } + } + return NO; +} + +// Check process name ++ (BOOL)checkProcessName { + NSString* processName = [[NSProcessInfo processInfo] processName]; + if ([processName containsString:@"Frida"]) { + return YES; + } + return NO; +} + +// A combined check for jailbreak and Frida ++ (BOOL)isDeviceCompromised { + if ([SecurityChecks isDeviceJailbroken]) { + return YES; + } + if ([SecurityChecks isFridaListeningOnDefaultPort]) { + return YES; + } + if ([SecurityChecks checkForFridaDylib]) { + return YES; + } + if([SecurityChecks checkProcessName]){ + return YES; + } +// if ([SecurityChecks isDebuggerAttached]) { +// return YES; +// } +// if ([SecurityChecks isFridaDetected]) { +// return YES; +// } + + return NO; +} + +@end diff --git a/siro_driver/ios/Runner/config.plist b/siro_driver/ios/Runner/config.plist new file mode 100644 index 0000000..3998c77 --- /dev/null +++ b/siro_driver/ios/Runner/config.plist @@ -0,0 +1,8 @@ + + + + + APIKey + AIzaSyDdqkLMCrqjVrn7XmadIqynyoBa7P27OeM + + diff --git a/siro_driver/ios/RunnerTests/RunnerTests.swift b/siro_driver/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/siro_driver/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +}