// // AppDelegate.swift // Crush // // Created by lyu dong on 2025/7/8. // import UIKit import URLNavigator import AWSS3 import AWSMobileClient //let navigator = Navigator() @main class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var appInitial: AppLaunchInitial = AppLaunchInitial() // private var navigator: NavigatorProtocol? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. // NavigationMap.initialize(navigator: navigator) appInitial.setupCommon() // Window Set is in SceneDelegate.swift // DispatchQueue.main.asyncAfter(deadline: .now() + 5) { // navigator.open("crushlevel://aichat/443040313704449") // } return true } // MARK: UISceneSession Lifecycle func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { // Called when a new scene session is being created. // Use this method to select a configuration to create the new scene with. return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { // Called when the user discards a scene session. // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } func application(_ application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: @escaping () -> Void){ AWSMobileClient.default().initialize { (userState, error) in guard error == nil else { dlog("❌Error initializing AWSMobileClient. Error: \(error!.localizedDescription)") return } dlog("✅AWSMobileClient initialized.") } //provide the completionHandler to the TransferUtility to support background transfers. AWSS3TransferUtility.interceptApplication(application, handleEventsForBackgroundURLSession: identifier, completionHandler: completionHandler) } func application( _ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:] ) -> Bool { // // Try presenting the URL first // if navigator.present(url, wrap: UINavigationController.self) != nil { // print("[Navigator] present: \(url)") // return true // } // // Try opening the URL // if navigator.open(url) == true { // print("[Navigator] open: \(url)") // return true // } return false } }