繁体   English   中英

在没有 AppDelegate 和 SceneDelegate 的新 SwiftUI 应用程序生命周期中,我的 iOS 应用程序在哪里配置 Firebase?

[英]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()最初会在AppDelegatedidFinishLaunchingWithOptions中的 go 中,现在我不知道在哪里添加这个配置。

设置远程通知也是如此。

PS:如果需要更多以前应用程序的详细信息/代码,请评论。 我没有添加任何代码,因为我觉得这是不必要的。

在新的 SwiftUI 生命周期中初始化第三方框架有三种方法:

使用旧生命周期 model

您仍然可以使用旧的生命周期 model:

选项 1:使用UIKit App Delegate生命周期

在新建 SwiftUI 项目时,可以选择旧的生命周期 model。 这将像以前一样创建AppDelegateSceneDelegate 我承认,不像一直使用 SwiftUI 那样花哨 - 但绝对是最简单和最直接的方法。

使用传统的 AppDelegate 生命周期设置 SwiftUI 2.0 项目

使用新生命周期 model

如果要使用新的生命周期 model,请使用以下方法之一。

选项 2:使用App的初始化程序

您可以覆盖App class 的默认初始化程序,如下所示:

import SwiftUI
import Firebase

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

选项3:使用@ 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
  }
}

在下面的链接中找到了答案:

hackingWithSwift

该页面的代码如下:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM