AppDelegate
添加到 SwiftUI 应用?SwiftUI 应用程序使用符合 App
协议的自定义结构启动,但有时您可能想找回我们曾经拥有的旧 UIApplicationDelegate
功能 - 也许处理推送通知的注册,响应内存警告,检测时间变化, 等等。
为此,首先创建一个自定义类,该类继承自 NSObject
并符合 UIApplicationDelegate
协议,如下所示:
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
print("Your code here")
return true
}
}
我在其中添加了 didFinishLaunchingWithOptions
,但是您只需要实现您关心的方法即可。
现在,在您的 App
场景中,使用 UIApplicationDelegateAdaptor
属性包装器告诉 SwiftUI
它应为应用程序委托使用 AppDelegate
类。
@main
struct NewIn14App: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
SwiftUI 负责创建该委托并照顾其生命周期,因此您可以继续向该类添加任何其他应用程序委托功能以进行调用。
提示:对于推送通知,您可能应该调整 UNUserNotificationCenter.current()
的委托属性,以使其指向您拥有的自定义类。