30

SwiftUI で完全に構築できるアプリが既にあります。Cloud Functions を使用した認証と通知に Firebase を使用していました。

新しい SwiftUI App->Scene->View コンストラクトを使用すると、アプリにセットアップを追加できません。

例->イニシャルFirebaseApp.configure()は最初は に入りますが、この構成をどこに追加するか迷っていますdidFinishLaunchingWithOptionsAppDelegate

リモート通知の設定についても同様です。

PS: 以前のアプリの詳細/コードが必要な場合はコメントしてください。不要だと感じたので、コードを追加しませんでした。

4

2 に答える 2

57

新しい SwiftUI ライフ サイクルでサード パーティ フレームワークを初期化するには、次の 3 つの方法があります。

古いライフ サイクル モデルの使用

古いライフ サイクル モデルを引き続き使用できます。

オプション 1: UIKit アプリ デリゲートのライフ サイクルを使用する

新しい SwiftUI プロジェクトを作成するときに、古いライフサイクル モデルを選択できます。AppDelegateこれにより、以前と同様に とが作成されますSceneDelegate。SwiftUI をずっと使用するほど派手ではありませんが、間違いなく最も簡単で簡単な方法です。

従来の AppDelegate ライフサイクルで SwiftUI 2.0 プロジェクトを設定する

新しいライフ サイクル モデルの使用

新しいライフ サイクル モデルを使用する場合は、次のいずれかの方法を使用します。

オプション 2:Appの初期化子を使用する

App次のように、クラスのデフォルトの初期化子をオーバーライドできます。

import SwiftUI
import Firebase

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

オプション 3: 使用@ UIApplicationDelegateAdaptor

あなたAppのクラスで、あなたの への参照を保持するプロパティを定義し、AppDelegateSwiftUI が次のようにプロパティ ラッパーAppDelegateを使用して を注入できるようにします。@ 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
  }
}
于 2020-06-29T07:26:06.630 に答える