Saltar al contenido

¿Dónde configurar Firebase en mi aplicación iOS en el nuevo ciclo de vida de la aplicación SwiftUI sin AppDelegate y SceneDelegate?

Solución:

Hay tres enfoques para inicializar marcos de terceros en el nuevo ciclo de vida de SwiftUI:

Usando el modelo de ciclo de vida antiguo

Todavía puede usar el modelo de ciclo de vida anterior:

Opción 1: utilice el Delegado de la aplicación UIKit ciclo vital

Al crear un nuevo proyecto SwiftUI, puede elegir el modelo de ciclo de vida anterior. Esto creará un AppDelegate y un SceneDelegate como antes. No es tan elegante como usar SwiftUI hasta el final, lo admito, pero definitivamente es la forma más fácil y directa.

Configuración de un proyecto SwiftUI 2.0 con el ciclo de vida tradicional de AppDelegate

Usando el nuevo modelo de ciclo de vida

Si desea utilizar el nuevo modelo de ciclo de vida, utilice uno de los siguientes enfoques.

Opción 2: utilice el Appinicializador

Puede anular el inicializador predeterminado de su App clase, así:

import SwiftUI
import Firebase

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

Opción 3: utilizar @ UIApplicationDelegateAdaptor

En ti App clase, defina una propiedad que tenga una referencia a su AppDelegatey deje que SwiftUI inyecte el AppDelegate utilizando el @ UIApplicationDelegateAdaptor envoltorio de propiedad, como este:

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
  }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *