From 9b2b502f3fef229071e0f383737b02e1fa0b6f96 Mon Sep 17 00:00:00 2001 From: Tushar Nikam Date: Thu, 28 May 2026 00:14:57 +0530 Subject: [PATCH] fix(firebase_messaging): migrate example iOS project from ObjC to Swift --- .../ios/Runner.xcodeproj/project.pbxproj | 39 ++++++++++--------- .../example/ios/Runner/AppDelegate.h | 6 --- .../example/ios/Runner/AppDelegate.m | 16 -------- .../example/ios/Runner/AppDelegate.swift | 16 ++++++++ .../example/ios/Runner/Info.plist | 2 +- .../ios/Runner/Runner-Bridging-Header.h | 1 + .../example/ios/Runner/SceneDelegate.swift | 6 +++ .../example/ios/Runner/main.m | 9 ----- 8 files changed, 45 insertions(+), 50 deletions(-) delete mode 100644 packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.h delete mode 100644 packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.m create mode 100644 packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.swift create mode 100644 packages/firebase_messaging/firebase_messaging/example/ios/Runner/Runner-Bridging-Header.h create mode 100644 packages/firebase_messaging/firebase_messaging/example/ios/Runner/SceneDelegate.swift delete mode 100644 packages/firebase_messaging/firebase_messaging/example/ios/Runner/main.m diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner.xcodeproj/project.pbxproj b/packages/firebase_messaging/firebase_messaging/example/ios/Runner.xcodeproj/project.pbxproj index a25173e1f7cf..bafbc2b62ee3 100644 --- a/packages/firebase_messaging/firebase_messaging/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/firebase_messaging/firebase_messaging/example/ios/Runner.xcodeproj/project.pbxproj @@ -10,8 +10,8 @@ 00E92990C987F9E25B63A112 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45E51992A527D76267EB20C4 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; - 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; + A1B2C3D4E5F6A7B8C9D0E1F5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F6A7B8C9D0E1F2 /* AppDelegate.swift */; }; + A1B2C3D4E5F6A7B8C9D0E1F6 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F6A7B8C9D0E1F3 /* SceneDelegate.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 */; }; @@ -41,12 +41,13 @@ 45E51992A527D76267EB20C4 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5213D4DB21693B7FDB92C6A0 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + A1B2C3D4E5F6A7B8C9D0E1F2 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + A1B2C3D4E5F6A7B8C9D0E1F3 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + A1B2C3D4E5F6A7B8C9D0E1F4 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; 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 /* Firebase Cloud Messaging Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Firebase Cloud Messaging Example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 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 = ""; }; @@ -113,27 +114,19 @@ isa = PBXGroup; children = ( 27715A442538A1AE00757C2A /* Firebase Cloud Messaging Example.entitlements */, - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C147021CF9000F007C117D /* Info.plist */, - 97C146F11CF9000F007C117D /* Supporting Files */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + A1B2C3D4E5F6A7B8C9D0E1F2 /* AppDelegate.swift */, + A1B2C3D4E5F6A7B8C9D0E1F3 /* SceneDelegate.swift */, + A1B2C3D4E5F6A7B8C9D0E1F4 /* Runner-Bridging-Header.h */, ); path = Runner; sourceTree = ""; }; - 97C146F11CF9000F007C117D /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 97C146F21CF9000F007C117D /* main.m */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; C6DFB291D4DE268ECF1E3926 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -298,8 +291,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, - 97C146F31CF9000F007C117D /* main.m in Sources */, + A1B2C3D4E5F6A7B8C9D0E1F5 /* AppDelegate.swift in Sources */, + A1B2C3D4E5F6A7B8C9D0E1F6 /* SceneDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -382,6 +375,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Firebase Cloud Messaging Example.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; @@ -405,6 +399,8 @@ PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.firebase.messaging; PRODUCT_NAME = "Firebase Cloud Messaging Example"; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -521,6 +517,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Firebase Cloud Messaging Example.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; @@ -544,6 +541,9 @@ PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.firebase.messaging; PRODUCT_NAME = "Firebase Cloud Messaging Example"; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -553,6 +553,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Firebase Cloud Messaging Example.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; @@ -576,6 +577,8 @@ PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.firebase.messaging; PRODUCT_NAME = "Firebase Cloud Messaging Example"; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.h b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.h deleted file mode 100644 index 01e6e1d4793a..000000000000 --- a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : FlutterAppDelegate - -@end diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.m b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.m deleted file mode 100644 index 413a0702dcbc..000000000000 --- a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.m +++ /dev/null @@ -1,16 +0,0 @@ -#import "AppDelegate.h" -#import "GeneratedPluginRegistrant.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application - didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // Override point for customization after application launch. - return [super application:application didFinishLaunchingWithOptions:launchOptions]; -} - -- (void)didInitializeImplicitFlutterEngine:(NSObject *)engineBridge { - [GeneratedPluginRegistrant registerWithRegistry:engineBridge.pluginRegistry]; -} - -@end diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.swift b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000000..c30b367ec0a9 --- /dev/null +++ b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,16 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + + func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) { + GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry) + } +} diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/Info.plist b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/Info.plist index cd5c989988e6..0d5cdfe074df 100644 --- a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/Info.plist +++ b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/Info.plist @@ -62,7 +62,7 @@ UISceneClassName UIWindowScene UISceneDelegateClassName - FlutterSceneDelegate + $(PRODUCT_MODULE_NAME).SceneDelegate UISceneConfigurationName flutter UISceneStoryboardFile diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/Runner-Bridging-Header.h b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000000..308a2a560b42 --- /dev/null +++ b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/SceneDelegate.swift b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/SceneDelegate.swift new file mode 100644 index 000000000000..b9ce8ea2b2ad --- /dev/null +++ b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/SceneDelegate.swift @@ -0,0 +1,6 @@ +import Flutter +import UIKit + +class SceneDelegate: FlutterSceneDelegate { + +} diff --git a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/main.m b/packages/firebase_messaging/firebase_messaging/example/ios/Runner/main.m deleted file mode 100644 index dff6597e4513..000000000000 --- a/packages/firebase_messaging/firebase_messaging/example/ios/Runner/main.m +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import -#import "AppDelegate.h" - -int main(int argc, char* argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -}