Ir a la consola

Actualiza tu app para iOS desde Firebase.com

Este documento te guiará en la actualización de tu app existente de Firebase.com a la nueva versión de Firebase console y las API correspondientes.

El proceso consta de cuatro pasos:

  1. Actualiza tu proyecto a la nueva versión de Firebase console.
  2. Instala el nuevo SDK de Firebase.
  3. Actualiza el código de tu base de datos.
  4. Actualiza tu código de autenticación.

Puedes actualizar tu proyecto a la nueva versión de la consola de firebase.google.com en cualquier momento. Tus aplicaciones seguirán funcionando. Después, puedes actualizar tu código cuando estés listo para usar alguna de las funciones nuevas de Firebase en tu aplicación.

Importa tu proyecto a la nueva versión de Firebase console

  • Accede a Firebase console y selecciona tu proyecto en "Tus proyectos actuales en Firebase.com".
  • Haz clic en el botón Importar correspondiente al proyecto que deseas actualizar.
    • Si tu proyecto está en un plan pago de firebase.com, deberás configurar la facturación del proyecto en la consola nueva. La información de facturación no se migra automáticamente.
    • Selecciona o crea una cuenta de facturación. Después de importar el proyecto, esta cuenta será responsable de todos sus gastos.
  • Tu contenido de Realtime Database y Hosting se importa automáticamente a Firebase console al instante.
  • Los datos de tus usuarios se migran automáticamente al nuevo backend de autenticación. Esto sucede en segundo plano y los usuarios pueden seguir usando la app mientras se migran los datos. El proceso no afecta los registros ni el acceso de los usuarios. Mientras el sistema migra las cuentas de usuario, verás un ícono giratorio en la pestaña Auth de Firebase console.
  • Si tienes un código promocional activo para una app de Firebase.com, comunícate con nosotros.

Instala el nuevo SDK de Firebase

No es necesario que actualices el código de tus aplicaciones de inmediato. El código de base de datos y de autenticación existente seguirá funcionando con el proyecto migrado. Cuando estés listo para comenzar a usar algunas de las funciones nuevas de Firebase en tu aplicación, puedes instalar el nuevo SDK de Firebase.

Ten en cuenta que cuando comiences a usar el SDK nuevo, Google Analytics para Firebase se habilitará de forma automática. Según la configuración predeterminada, tus datos de Analytics mejorarán otras características de Firebase y otros productos de Google. Puedes controlar la forma de compartir datos de Analytics cuando lo desees en la configuración. Más información

Configura tu app

Tu app se configura ahora con el archivo GoogleService-Info.plist que puedes descargar desde Firebase console. Para agregar de manera sencilla la configuración a tu proyecto, arrastra el archivo GoogleService-Info.plist descargado a tu proyecto de Xcode (asegúrate de seleccionar “Copy items if needed” para que se agregue al directorio de tu proyecto).

La clase FIRApp procesa el archivo GoogleService-Info.plist. En el método application:didFinishLaunchingWithOptions: de tu clase AppDelegate, agrega la siguiente llamada:

Objective-C

[FIRApp configure];

Swift

FIRApp.configure()

Actualiza el código de tu base de datos

Actualiza tus dependencias de CocoaPods

El modo más sencillo de comenzar es cambiar tus dependencias de CocoaPods. A partir de la versión 3.x, el pod de Firebase tiene subespecificaciones independientes para cada API:

ANTES

pod 'Firebase', '>= 2.5.1'
DESPUÉS

pod 'Firebase/Core'
pod 'Firebase/Database'

Ejecuta pod update para obtener los pods nuevos. Es posible que ahora tu app presente una serie de errores de compilación o advertencias donde cambiaron los nombres de las API. El resto de esta guía describe cómo solucionar estos problemas.

Primero, reemplaza tu línea #import si usas Objective-C (si usas Swift, esto no cambia).

ANTES

#import <Firebase/Firebase.h>
DESPUÉS

@import Firebase

Obtén una referencia de la base de datos

En el SDK 3.x, las referencias de Firebase se reemplazan por FIRDatabaseReference y usas la clase FIRDatabase para obtener una referencia inicial en tu base de datos. Por lo tanto, después de configurar FIRApp, puedes obtener la referencia de la base de datos en tu código de la siguiente manera:

ANTES

Objective-C


Firebase *rootRef = [[Firebase alloc] initWithUrl:@"https://<YOUR-FIREBASE-APP>.firebaseio.com"];

Swift


var rootRef = Firebase(url:"https://<YOUR-FIREBASE-APP>.firebaseio.com")
DESPUÉS

Objective-C


FIRDatabaseReference *rootRef= [[FIRDatabase database] reference];

Swift


var rootRef = FIRDatabase.database().reference()

Ten en cuenta que la URL de tu base de datos se determina de manera automática según el archivo GoogleService-Info.plist y no es necesario que la especifiques.

Habilita la persistencia en disco

Si tu app usa persistencia en disco, ahora debes habilitarla mediante el objeto FIRDatabase:

ANTES

Objective-C


[Firebase defaultConfig].persistenceEnabled = YES;

Swift


Firebase.defaultConfig().persistenceEnabled = true
DESPUÉS

Objective-C


[FIRDatabase database].persistenceEnabled = YES;

Swift


FIRDatabase.database().persistenceEnabled = true

Al igual que en el SDK 2.x, la persistencia en disco debe habilitarse antes de que se hagan otras llamadas a la base de datos.

Actualiza las referencias de métodos y clases

Se cambiaron los nombres de varios tipos de base de datos en el SDK 3.x para que se adecuen a otras API. Esta tabla muestra algunos cambios comunes que deberás hacer:

Antes Después
Firebase FIRDatabaseReference
FDataSnapshot FIRDataSnapshot
FirebaseHandle FIRDatabaseHandle
FEventType FIRDataEventType
FQuery FIRDatabaseQuery
FMutableData FIRMutableData
FTransactionResult FIRTransactionResult
FConfig FIRDatabase
FirebaseApp FIRDatabase
kFirebaseServerValueTimestamp [FIRServerValue timestamp]

Si no puedes encontrar la clase o el método que estás buscando, consulta los documentos de referencia de Database.

Actualiza tu código de autenticación

La funcionalidad de Firebase Authentication ahora se aloja detrás de su propia clase FIRAuth, de modo que las operaciones de autenticación ahora se hacen en una instancia de FIRAuth en lugar de una referencia de Firebase.

Actualiza tus dependencias de CocoaPods

Dado que Authentication ahora se aloja en su propio módulo, primero debes agregar una dependencia a tu Podfile:

pod 'Firebase/Auth'

Deberás volver a ejecutar pod update después de agregar la dependencia.

Acceso de los usuarios

Los métodos de autenticación funcionan de manera similar a como lo hacían antes, pero ahora existen como métodos en el objeto FIRAuth con nombres nuevos y FAuthData se reemplaza por FIRUser. Por ejemplo:

ANTES

Objective-C


[ref authAnonymouslyWithCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", authData.uid);
    }
}];

Swift


ref.authAnonymouslyWithCompletionBlock { error, authData in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print("Signed in with uid:", authData.uid)
    }
}
DESPUÉS

Objective-C


[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRUser *_Nullable user,
                                                  NSError *_Nullable error) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", user.uid);
    }
}];

Swift


FIRAuth.auth()!.signInAnonymouslyWithCompletion() { (user, error) in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print ("Signed in with uid:", user!.uid)
    }
}

Para ver la documentación sobre otros proveedores de autenticación, consulta la clase FIRAuth o la guía de Firebase Authentication.

Haz que un usuario acceda con un token personalizado

La autenticación con tokens personalizados en el cliente también funciona de manera similar a como lo hacía antes. A continuación, se muestra cómo acceder con un token personalizado en la API 2.x y en la API nueva:

ANTES

Objective-C


[ref authWithCustomToken:AUTH_TOKEN
     withCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Login Failed! %@", error);
    } else {
        NSLog(@"Login succeeded! %@", authData);
    }
}];

Swift


ref.authWithCustomToken(AUTH_TOKEN, withCompletionBlock: { error, authData in
    if error != nil {
        println("Login failed! \(error)")
    } else {
        println("Login succeeded! \(authData)")
    }
})
DESPUÉS

Objective-C


[[FIRAuth auth] signInWithCustomToken:customToken
                           completion:^(FIRUser *_Nullable user,
                                        NSError *_Nullable error) {
                             // ...
                           }];

Swift


FIRAuth.auth()?.signIn(withCustomToken: customToken ?? "") { (user, error) in
  // ...
}

Los tokens personalizados que se generan en el servidor tienen un formato nuevo. Puedes usar los SDK de Firebase Admin para Node.js y Java a fin de crear tokens personalizados compatibles con la nueva API, o bien crear tokens personalizados con una biblioteca de JWT de terceros.

Ten en cuenta que los SDK de Firebase Admin generan tokens personalizados que caducan al cabo de una hora, a diferencia de las bibliotecas auxiliares de la API 2.x que, en la configuración predeterminada, generan tokens que caducan tras 24 horas.

Haz que un usuario salga de la sesión

ANTES

Objective-C


[ref unauth];

Swift


ref.unauth()
DESPUÉS

Objective-C


[[FIRAuth auth] signOut:nil];

Swift


try! FIRAuth.auth()!.signOut()

Supervisa el estado de autenticación

ANTES

Objective-C


[ref observeAuthEventWithBlock:^(FAuthData *authData) {
    if (authData) {
        NSLog(@"User is signed in with uid: %@", authData.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
}];

Swift


ref.observeAuthEventWithBlock({ authData in
    if authData != nil {
        print("User is signed in with uid:", authData.uid)
    } else {
        print("No user is signed in.")
    }
})
DESPUÉS

Objective-C


[[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth * _Nonnull auth, FIRUser * _Nullable user) {
    if (user) {
        NSLog(@"User is signed in with uid: %@", user.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
  }];

Swift


FIRAuth.auth()!.addAuthStateDidChangeListener() { (auth, user) in
    if let user = user {
        print("User is signed in with uid:", user.uid)
    } else {
        print("No user is signed in.")
    }
}

FIRAuth tiene varias funciones nuevas (vinculación de cuentas, más proveedores de autenticación, etc.). Consulta la guía de Authentication y sus documentos de referencia para obtener más detalles.

Migra los accesos existentes

Si hay usuarios que accedieron a tu app con un SDK anterior, necesitarás algo de código para que esas sesiones sigan activas con el SDK nuevo. De lo contrario, los usuarios deberán volver a acceder a sus cuentas. Se proporciona un ejemplo de código abierto para esto en el repositorio de GitHub Asistentes para la migración de Firebase Auth.

Actualiza la nueva plantilla para restablecer contraseñas

Si tu app permite que los usuarios accedan con la autenticación de correo electrónico y contraseña, probablemente también les otorgues a estos usuarios la opción de restablecer su contraseña.

Una vez que hayas actualizado al SDK nuevo, esos correos electrónicos de restablecimiento de contraseña usarán las plantillas nuevas especificadas en Firebase Console. Asegúrate de actualizarlas según las necesidades de tu app.

Actualiza tus bibliotecas de Firebase

Si usas alguna de las siguientes bibliotecas, deberás actualizarla a la versión más reciente.

Biblioteca Versión compatible Recurso
GeoFire 1.2.x Github