如何在SwiftUI中设置Firebase?一些问题。

3

我正在观看关于如何在SwiftUI中设置Firebase的视频,但似乎没有最新的视频?

我找到的最新视频只需要两个步骤:导入Firebase,然后在我的应用程序结构中创建一个调用FirebaseApp.configure()的init方法,就像这样:

import SwiftUI
import Firebase

@main
struct FirestoreDemoApp: App {
    
    init() {
        FirebaseApp.configure()
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

但 Firebase 有很多代码并告诉我要像这样设置:

import SwiftUI
import FirebaseCore


class AppDelegate: NSObject, UIApplicationDelegate {
  func application(_ application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    FirebaseApp.configure()

    return true
  }
}

@main
struct YourApp: App {
  // register app delegate for Firebase setup
  @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate


  var body: some Scene {
    WindowGroup {
      NavigationView {
        ContentView()
      }
    }
  }
}

但这两个似乎仍然有效?有人可以解释一下第二个选项中的所有AppDelegate是什么,以及它的意义是什么吗?为什么第一个选项更简短,但也完全正常工作?

当 SwiftUI 被引入时,我们使用了包括 AppDelegate 文件在内的 UIKit 应用程序生命周期。然而,后来苹果提供了一个 SwiftUI 生命周期,这是目前最新的版本。你提供的两个代码片段都应该工作得相当类似。在应用程序启动时配置 Firebase。 - Blacksmith
1个回答

4

我是Firebaser,实际上,我是我们入门流程中建议使用@UIAppDelegateAdaptor方法的人。

总之:两种方法都可以正常工作,但@UIAppDelegateAdaptor方法涵盖了更多用例。

在您的应用程序初始化器中初始化Firebase适用于大多数Firebase API,例如Firestore、RTDB(大部分)、Authentication等。然而,一些API,例如FCM或电话号码验证需要一个App Delegate。

由于我们不想使入门流程比必要的更复杂(例如通过询问人们是否打算使用FCM或Phone Auth,或让他们阅读冗长的博客文章),因此我们决定采取安全路线,并推荐看起来稍微复杂一些的方法,以涵盖所有用例。

有关更详细的解释,请查看我的博客文章“Firebase和新的SwiftUI 2应用程序生命周期”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接