Setup ios signing and do UISceneDelegate migration
What changed, and why it matters
This commit is a routine iOS build-configuration update for a Flutter wallet app. It adds Apple code-signing settings, migrates the app to use the newer iOS scene-delegate API, and registers Flutter plugins in a slightly different way. None of these changes introduce a security vulnerability or fix one; they are standard project maintenance needed to keep the app building and running on modern iOS.
No security action required. Treat as normal build/maintenance update. Reviewers may verify the DEVELOPMENT_TEAM identifier and bundle identifier match the intended Apple Developer account, and confirm the automatic code-signing choice is acceptable for the project's release workflow.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff updates four iOS project files: (1) AppFrameworkInfo.plist removes MinimumOSVersion (handled by Xcode build settings instead); (2) project.pbxproj adds CODE_SIGN_IDENTITY, CODE_SIGN_STYLE=Automatic, DEVELOPMENT_TEAM, and clears PROVISIONING_PROFILE_SPECIFIER for Debug/Profile/Release build configurations; (3) AppDelegate.swift makes the AppDelegate conform to FlutterImplicitEngineDelegate and moves GeneratedPluginRegistrant registration into didInitializeImplicitFlutterEngine; (4) Info.plist adds UIApplicationSceneManifest with a single FlutterSceneDelegate scene and reorders BGTaskSchedulerPermittedIdentifiers. These are normal Flutter/iOS modernization and signing setup changes. There is no evidence of a security bug, hardcoded secret, unsafe entitlements, or malicious modification.
Changed components
ios/Flutter/AppFrameworkInfo.plistios/Runner.xcodeproj/project.pbxprojios/Runner/AppDelegate.swiftios/Runner/Info.plistInspect captured patch +42 / −9
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 1dc6cf7..391a902 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -20,7 +20,5 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
- <key>MinimumOSVersion</key>
- <string>13.0</string>
</dict>
</plist>
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 9e8df5a..4131fd8 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -501,7 +501,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = Y62MZZFR2Y;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -516,6 +519,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = org.magicgrants.skylight;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -689,7 +693,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = Y62MZZFR2Y;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -704,6 +711,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = org.magicgrants.skylight;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@@ -717,7 +725,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = Y62MZZFR2Y;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -732,6 +743,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = org.magicgrants.skylight;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index ed4a7b8..752d65d 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -2,7 +2,7 @@ import Flutter
import UIKit
@main
-@objc class AppDelegate: FlutterAppDelegate {
+@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
@@ -11,11 +11,13 @@ import UIKit
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}
- GeneratedPluginRegistrant.register(with: self)
-
// Enable background fetch for workmanager
UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
+
+ func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
+ GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
+ }
}
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index a13d0aa..1505222 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
+ <key>BGTaskSchedulerPermittedIdentifiers</key>
+ <array>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ </array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
@@ -26,6 +30,27 @@
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
+ <key>UIApplicationSceneManifest</key>
+ <dict>
+ <key>UIApplicationSupportsMultipleScenes</key>
+ <false/>
+ <key>UISceneConfigurations</key>
+ <dict>
+ <key>UIWindowSceneSessionRoleApplication</key>
+ <array>
+ <dict>
+ <key>UISceneClassName</key>
+ <string>UIWindowScene</string>
+ <key>UISceneConfigurationName</key>
+ <string>flutter</string>
+ <key>UISceneDelegateClassName</key>
+ <string>FlutterSceneDelegate</string>
+ <key>UISceneStoryboardFile</key>
+ <string>Main</string>
+ </dict>
+ </array>
+ </dict>
+ </dict>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIBackgroundModes</key>
@@ -33,10 +58,6 @@
<string>fetch</string>
<string>processing</string>
</array>
- <key>BGTaskSchedulerPermittedIdentifiers</key>
- <array>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- </array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.