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() 的委托属性,以使其指向您拥有的自定义类。