![](/img/trans.png)
[英]SwiftUI app life cycle iOS14 where to put AppDelegate code?
[英]Where to configure Firebase in my iOS app in the new SwiftUI App life cycle without AppDelegate and SceneDelegate?
我已经有一个可以用 SwiftUI 完全构建的应用程序。 我正在使用 Firebase 使用 Cloud Functions 进行身份验证和通知。
现在使用新的 SwiftUI App->Scene->View 构造,我无法将设置添加到我的应用程序中。
例如 -> 最初的FirebaseApp.configure()
最初会在AppDelegate
的didFinishLaunchingWithOptions
中的 go 中,现在我不知道在哪里添加这个配置。
设置远程通知也是如此。
PS:如果需要更多以前应用程序的详细信息/代码,请评论。 我没有添加任何代码,因为我觉得这是不必要的。
在新的 SwiftUI 生命周期中初始化第三方框架有三种方法:
您仍然可以使用旧的生命周期 model:
在新建 SwiftUI 项目时,可以选择旧的生命周期 model。 这将像以前一样创建AppDelegate
和SceneDelegate
。 我承认,不像一直使用 SwiftUI 那样花哨 - 但绝对是最简单和最直接的方法。
如果要使用新的生命周期 model,请使用以下方法之一。
App
的初始化程序您可以覆盖App
class 的默认初始化程序,如下所示:
import SwiftUI
import Firebase
@main
struct SO62626652_InitialiserApp: App {
init() {
FirebaseApp.configure()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
@ UIApplicationDelegateAdaptor
在您的App
class 中,定义一个包含对您的AppDelegate
的引用的属性,并让 SwiftUI 使用@ UIApplicationDelegateAdaptor
属性包装器注入AppDelegate
,如下所示:
import SwiftUI
import Firebase
@main
struct SO62626652_AppDelegateAdaptorApp: App {
@UIApplicationDelegateAdaptor private var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
在下面的链接中找到了答案:
该页面的代码如下:
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
print("Your code here")
FirebaseApp.configure()
return true
}
}
在App
内部
我们需要添加以下行:
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
。
解释在链接上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.