Commit Graph
12 Commits
Author SHA1 Message Date
RustDeskandClaude Opus 5.5 0d6265bb26 fix(ios): adopt the UIScene life cycle (#16776)
* fix(ios): adopt the UIScene life cycle

UIKit refuses to launch an app linked against the iOS 27 SDK that has
not adopted the UIScene life cycle: it traps in
_UIApplicationEvaluateRuntimeIssueForNoSceneLifecycleAdoption with
"UIScene life cycle is required for apps built with this SDK". 1.5.1
(69) is the first build made with Xcode 27.1, so it crashes at launch on
every iOS 27 device.

Flutter 3.24.5 has no FlutterSceneDelegate, so add a minimal one:

- Info.plist declares a single-scene manifest that loads Main.storyboard.
- SceneDelegate hands the storyboard window to AppDelegate when the
  scene connects. FlutterAppDelegate finds the engine for plugin
  registration through its window, which no longer exists in
  didFinishLaunching, so registration moves there.
- The launch URL now arrives in the scene connection options and later
  URLs in scene(_:openURLContexts:). Forward both to plugins through the
  app delegate callbacks uni_links listens on, so rustdesk:// links keep
  working on cold and warm start.

Verified on the iOS 27.1 simulator with a Flutter 3.24.5 app that has
the same Runner setup: the app launches, plugin channels respond, the
initial link and stream links arrive, and lifecycle states reach Dart.

Fixes #16766

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ios): drive the status bar from the view controller under UIScene

With UIViewControllerBasedStatusBarAppearance=false, Flutter 3.24.5 hides
and styles the status bar through the app-level UIApplication setters.
UIKit ignores those once the app uses the UIScene life cycle, so
SystemChrome.setEnabledSystemUIMode(manual, overlays: []) no longer hides
the status bar during a remote session.

Set the key to true so Flutter goes through FlutterViewController's
prefersStatusBarHidden / preferredStatusBarStyle instead. Checked on the
iOS 27.1 simulator in scene mode: hiding, showing again and the light
overlay style all take effect. The Dart side only uses SystemChrome, so
it does not depend on this key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:11:24 +08:00
rustdesk ef827fdb34 update ios minver 2026-10-30 16:30:09 +08:00
rustdesk 4e6a43288e https://github.com/rustdesk/rustdesk/issues/9877 https://developer.apple.com/documentation/security/ksecusedataprotectionkeychain 2024-11-10 23:57:25 +08:00
rustdesk 474e13f8b9 move ios ci to arm64 mac 2024-04-26 19:00:38 +08:00
rustdesk a8eff641b2 fix ios ci for flutter 3.16 2024-02-19 12:35:12 +08:00
rustdesk 52acbd7d2c fix ios ci 2023-11-01 15:45:48 +08:00
rustdesk af4f84a84b fix ios ci 2023-11-01 15:16:33 +08:00
rustdesk a0cc6afa7e iOS deploy can run 2023-08-30 18:25:50 +08:00
rustdesk 7cfcedaa5c build ipa with given profile: https://jtmuller5.medium.com/flutter-build-an-ipa-90520e813a96 2023-04-22 13:21:06 +08:00
sjpark 261f98774b ios build 2023-04-20 22:30:09 +09:00
Kingtous e269fb28dd fix: build ipa archive first 2023-04-18 18:53:40 +08:00
rustdesk 6de0fa781c for merge 2022-05-12 16:50:30 +08:00