修复合作获客扫码绑定崩溃与 Toast 层级,并接入分成比例修改。
将扫码页提升到列表层弹出并补齐 AppDelegate.window,避免扫码时 UIKit 取主窗口崩溃;Toast 改用独立 UIWindow 显示在 sheet 之上;合作获客员支持短信验证修改分成比例,同时优化冷启动根视图创建时机并补充相关测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -9,16 +9,34 @@ import UIKit
|
||||
|
||||
/// AppDelegate 承接 APNs 与微信 SDK 系统回调,SwiftUI App 入口通过 adaptor 注入。
|
||||
final class AppDelegate: NSObject, UIApplicationDelegate {
|
||||
/// 主窗口引用。SwiftUI 生命周期下系统不会自动注入,但扫码等 UIKit 路径仍会读取 `delegate.window`。
|
||||
@objc var window: UIWindow?
|
||||
|
||||
func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
|
||||
) -> Bool {
|
||||
syncKeyWindow()
|
||||
NotificationCenter.default.addObserver(
|
||||
self,
|
||||
selector: #selector(syncKeyWindow),
|
||||
name: UIWindow.didBecomeKeyNotification,
|
||||
object: nil
|
||||
)
|
||||
Task { @MainActor in
|
||||
WeChatManager.shared.registerIfNeeded()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/// 将 `window` 与当前 key window 保持同步,供 UIKit / SDK 通过 AppDelegate 取主窗口。
|
||||
@objc private func syncKeyWindow() {
|
||||
window = UIApplication.shared.connectedScenes
|
||||
.compactMap { $0 as? UIWindowScene }
|
||||
.flatMap(\.windows)
|
||||
.first(where: \.isKeyWindow)
|
||||
}
|
||||
|
||||
func application(
|
||||
_ app: UIApplication,
|
||||
open url: URL,
|
||||
|
||||
Reference in New Issue
Block a user