From d39cbb48251b5dc75a3bbe7ba4db4284408fbfbb Mon Sep 17 00:00:00 2001
From: Haroon Amjad <>
Date: Mon, 28 Sep 2026 12:21:28 +0300
Subject: [PATCH] Update to iOS 27.0, Update to stores VersionID 21.3
---
ios/Podfile | 2 +-
ios/Runner/AppDelegate.swift | 50 +++++++++++++++++++++++++++++++-----
ios/Runner/Info.plist | 21 +++++++++++++++
lib/core/api/api_client.dart | 2 +-
lib/core/api_consts.dart | 4 +--
lib/core/app_state.dart | 6 ++---
lib/core/utils/utils.dart | 2 +-
pubspec.yaml | 10 ++++----
8 files changed, 77 insertions(+), 20 deletions(-)
diff --git a/ios/Podfile b/ios/Podfile
index a74c7fb2..e0283052 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -59,7 +59,7 @@ post_install do |installer|
'PERMISSION_NOTIFICATIONS=1',
]
build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386'
- build_configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
+ build_configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
build_configuration.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
xcconfig_path = build_configuration.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index dc11bbed..8a0a6208 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -4,22 +4,58 @@ import FirebaseCore
import FirebaseMessaging
import GoogleMaps
@main
-@objc class AppDelegate: FlutterAppDelegate {
+@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
+ func didInitializeImplicitFlutterEngine(_ engineBridge: any FlutterImplicitEngineBridge) {
+ GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
+
+// GMSServices.provideAPIKey("AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng")
+// FirebaseApp.configure()
+// initializePlatformChannels()
+
+ }
+
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GMSServices.provideAPIKey("AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng")
- FirebaseApp.configure()
+// FirebaseApp.configure()
initializePlatformChannels()
- GeneratedPluginRegistrant.register(with: self)
+// GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
func initializePlatformChannels(){
- if let mainViewController = window?.rootViewController as? FlutterViewController{ // platform initialization suppose to be in foreground
- HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController)
- }
- }
+
+ DispatchQueue.main.async { [weak self] in
+ guard let self = self else { return }
+
+ // 1. Try accessing window via AppDelegate (legacy/single-window setup)
+ var controller = self.window?.rootViewController as? FlutterViewController
+
+ // 2. Fallback to UIWindowScene active window (modern iOS architecture)
+ if controller == nil {
+ controller = UIApplication.shared.connectedScenes
+ .compactMap { $0 as? UIWindowScene }
+ .flatMap { $0.windows }
+ .first(where: { $0.isKeyWindow })?
+ .rootViewController as? FlutterViewController
+ }
+
+ // 3. Perform initialization once FlutterViewController is available
+ if let mainViewController = controller {
+ HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController)
+ } else {
+ print("⚠️ FlutterViewController not ready yet for initializePlatformChannels.")
+ }
+ }
+
+
+// if let mainViewController = window?.rootViewController as? FlutterViewController{ // platform initialization suppose to be in foreground
+// HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController)
+// }
+
+ }
+
override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken:Data){
// Messaging.messaging().apnsToken = deviceToken
super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 4f51f820..85d84646 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -98,6 +98,27 @@
This app requires speech recognition access to access voice command features.
NSUserActivityTypes
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneClassName
+ UIWindowScene
+ UISceneConfigurationName
+ flutter
+ UISceneDelegateClassName
+ FlutterSceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
UIApplicationSupportsIndirectInputEvents
UIBackgroundModes
diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart
index 7a72e251..07198caa 100644
--- a/lib/core/api/api_client.dart
+++ b/lib/core/api/api_client.dart
@@ -209,7 +209,7 @@ class ApiClientImp implements ApiClient {
body['TokenID'] = "@dm!n";
}
- body['TokenID'] = "@dm!n";
+ // body['TokenID'] = "@dm!n";
// body['PatientID'] = 7000792;
// body['PatientID'] = 53320;
// body['PatientTypeID'] = 1;
diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart
index 9b73c871..eb190c13 100644
--- a/lib/core/api_consts.dart
+++ b/lib/core/api_consts.dart
@@ -6,7 +6,7 @@ import 'package:myfatoorah_flutter/myfatoorah_flutter.dart';
class ApiConsts {
static const maxSmallScreen = 660;
- static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat;
+ static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod;
// static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT
@@ -317,7 +317,7 @@ class ApiConsts {
// ************ static values for Api ****************
// static final double appVersionID = 21.9;
- static final double appVersionID = 21.2;
+ static final double appVersionID = 21.3;
// static final double appVersionID = 50.7;
static final int appChannelId = 3;
diff --git a/lib/core/app_state.dart b/lib/core/app_state.dart
index c1d0293d..25753e1a 100644
--- a/lib/core/app_state.dart
+++ b/lib/core/app_state.dart
@@ -52,13 +52,13 @@ class AppState {
// bool isMyFatoorahEnabled = true;
void setIsPaytabsEnabled(bool value) {
- isPaytabsEnabled = value;
+ isPaytabsEnabled = false;
// isPaytabsEnabled = true;
}
void setIsMyFatoorahEnabled(bool value) {
- // isMyFatoorahEnabled = value;
- isMyFatoorahEnabled = true;
+ isMyFatoorahEnabled = false;
+ // isMyFatoorahEnabled = true;
}
void setIsPayfortHostedPageEnabled(bool value) {
diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart
index 0d09a716..0b5049cf 100644
--- a/lib/core/utils/utils.dart
+++ b/lib/core/utils/utils.dart
@@ -135,7 +135,7 @@ class Utils {
static String convertStringToDateTime(String dateTimeString) {
String timeString = dateTimeString;
// Parse the time string using DateFormat
- DateFormat format = DateFormat.Hms(["en-US"]); // 'Hms' = 'HH:mm:ss'
+ DateFormat format = DateFormat.Hms("en-US"); // 'Hms' = 'HH:mm:ss'
DateTime time = format.parse(timeString);
DateTime now = DateTime.now();
diff --git a/pubspec.yaml b/pubspec.yaml
index c7e8ba1d..28533163 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -25,9 +25,9 @@ dependencies:
easy_localization: ^3.0.8
fluttertoast: ^8.2.12
flutter_rating_bar: ^4.0.1
- firebase_messaging: ^15.2.10
+ firebase_messaging: ^16.7.0
# firebase_messaging: any
- firebase_core: any
+ firebase_core: ^4.15.0
# firebase_core: ^3.13.1
permission_handler: ^12.0.1
flutter_local_notifications: ^19.4.1
@@ -68,9 +68,9 @@ dependencies:
dartz: ^0.10.1
equatable: ^2.0.7
google_api_availability: ^5.0.1
- firebase_analytics: ^11.5.1
- firebase_crashlytics: ^4.3.8
- firebase_remote_config: ^5.5.0
+ firebase_analytics: ^12.6.0
+ firebase_crashlytics: ^5.4.0
+ firebase_remote_config: ^6.7.0
jiffy: ^6.4.3
# hijri_gregorian_calendar:
# path: /Users/aamir/StudioProjects/hijri_gregorian_calendar