firebase - 在没有 AppDelegate 和 SceneDelegate 的新 SwiftUI 应用程序生命周期中,我的 iOS 应用程序在哪里配置 Firebase?
问题描述
我已经有一个可以使用 SwiftUI 完全构建的应用程序。我使用 Firebase 使用 Cloud Functions 进行身份验证和通知。
现在使用新的 SwiftUI App->Scene->View 构造,我无法将设置添加到我的应用程序中。
例如 -> 最初FirebaseApp.configure()
会进入 in didFinishLaunchingWithOptions
,AppDelegate
现在我不知道在哪里添加这个配置。
设置远程通知也是如此。
PS:如果需要更多以前应用程序的详细信息/代码,请评论。我没有添加任何代码,因为我觉得这是不必要的。
解决方案
在新的 SwiftUI 生命周期中初始化第三方框架有三种方法:
使用旧的生命周期模型
您仍然可以使用旧的生命周期模型:
选项 1:使用UIKit App Delegate生命周期
在新建 SwiftUI 项目时,可以选择旧的生命周期模型。这将像以前一样创建一个AppDelegate
和一个SceneDelegate
。我承认,它不像一直使用 SwiftUI 那样花哨——但绝对是最简单、最直接的方式。
使用新的生命周期模型
如果要使用新的生命周期模型,请使用以下方法之一。
选项 2:使用App
' 初始化程序
您可以覆盖App
类的默认初始化程序,如下所示:
import SwiftUI
import Firebase
@main
struct SO62626652_InitialiserApp: App {
init() {
FirebaseApp.configure()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
选项 3:使用@ UIApplicationDelegateAdaptor
在你App
的类中,定义一个包含对你的引用的属性AppDelegate
,并让 SwiftUIAppDelegate
使用@ UIApplicationDelegateAdaptor
属性包装器注入,如下所示:
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
}
}
推荐阅读
- excel - 如何使用excel公式根据下一个单元格计算唯一值?
- java - Java Spring 调度服务没有获取最新数据
- vba - 搜索单个或多个文本组合的 FlagRequest
- angular - 你如何使这个可观察的内部可观察的工作?
- javascript - 网络无障碍导航
- javascript - Ajax : 响应值与 php 文件中的不一样
- python - Django 模型 create() 和 save() 不持久保存在数据库中(实例上的 pk / id 属性未设置)
- reactjs - npm 启动问题:npm ERR!代码生命周期
- python - Python 代码的行为不同,具体取决于我是将列表直接传递给构造函数还是作为变量传递
- ios - Xcode:如何知道呈现当前视图的viewController?