Administra las instalaciones de Firebase

El servicio de instalaciones de Firebase (FIS) proporciona un ID de instalación de Firebase (FID) para cada instancia que se instala de una app de Firebase. Los servicios de Firebase, como In‑App Messaging o Remote Config, usan de forma interna este ID sin que los desarrolladores deban interactuar directamente con la API del FIS. Sin embargo, hay algunos casos en los que los desarrolladores de apps podrían querer llamar de forma directa a la API del FIS, como en los siguientes:

  • Para borrar una instancia de app y todos sus datos y estadísticas relacionados con el propósito de hacer una “limpieza de datos”
  • Para recuperar identificadores (ID de instalación de Firebase) a fin de orientarse a instalaciones específicas de apps
  • Para recuperar tokens de autenticación a fin de autenticar instalaciones de Firebase

Para comenzar a llamar de manera directa a la API del FIS, agrega el SDK a tu app.

Agrega a tu app el SDK de las instalaciones de Firebase

iOS

  1. Sigue estos pasos para agregar al Podfile la dependencia de las instalaciones de Firebase:
    pod 'Firebase/Installations'
  2. Ejecuta pod install y abre el archivo .xcworkspace creado.
  3. Importa el módulo de Firebase en UIApplicationDelegate:

    Swift

    import Firebase

    Objective‑C

    @import Firebase;
  4. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de tu app:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective‑C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Android

Agrega la dependencia del SDK para Android de las instalaciones de Firebase al archivo Gradle (generalmente app/build.gradle) de tu módulo (a nivel de la app):

implementation 'com.google.firebase:firebase-installations:16.3.3'

JavaScript

En función de cómo se aloje tu aplicación web, es posible que la configuración se controle de forma automática o que debas actualizar tu objeto de configuración de Firebase.

Por ejemplo, si tus dependencias se agregan a index.html, agrégala al elemento <head>:

<script src="/__/firebase/7.19.1/firebase-installations.js"></script>

Borra una instalación de Firebase y sus datos asociados

Por lo general, los datos asociados con una instalación de Firebase no identifican de forma personal. Sin embargo, puede ser útil (y en algunos casos es un requisito legal) darles a los usuarios la opción de administrar y borrar estos datos. Los siguientes procedimientos de eliminación borran todos los datos registrados en una instalación de Firebase en cumplimiento del GDPR.

Los ID de instalación de Firebase son diferentes para la instalación de cada aplicación. Distintas aplicaciones en un mismo dispositivo tienen diferentes ID de instalación de Firebase. Estos ID identifican las instalaciones de la app y sus datos asociados, y permiten borrar los datos asociados con las instalaciones de apps individuales en todos los servicios de Firebase.

Cuando borras un ID de instalación, los datos asociados se quitan de los sistemas activos y de copia de seguridad de todos los servicios de Firebase en un plazo de 180 días.

Si no inhabilitas todos los servicios generadores de FID en tu app, FIS crea un ID nuevo después de unos días. Firebase considera que el ID recién creado es una instalación nueva de Firebase y no lo asocia de ninguna manera con el ID o los datos anteriores.

Borra un FID mediante una llamada a la API del cliente

Para borrar los FID que generan los servicios de Firebase, llama al método apropiado desde el SDK de las instalaciones de Firebase:

Swift

func delete(completion: @escaping (Error?) -> Void)

Objective‑C

- (void)deleteWithCompletion:(nonnull void (^)(NSError *_Nullable))completion;

Java

FirebaseInstallations.getInstance().delete()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation deleted");
        } else {
            Log.e("Installations", "Unable to delete Installation");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().delete().addOnCompleteListener { task ->
    if (task.isComplete) {
        Log.d("Installations", "Installation deleted")
    }  else {
        Log.e("Installations", "Unable to delete Installation");
    }
}

JavaScript

await firebase.installations().delete();

Borra un FID mediante una llamada a la API del servidor

Para borrar un FID con una llamada a la API del servidor, agrega el SDK de Firebase Admin a tu servidor, si aún no lo has hecho.

Una vez que esté listo lo anterior, borra los FID mediante una llamada a la función de eliminación en el lenguaje de tu preferencia (ten en cuenta que aunque estos métodos reflejan la denominación del ID de instancia, en realidad borran el FID cuando se les llama con cualquier SDK de Firebase actual).

Node.js

// An FID sent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';

admin.instanceId().deleteInstanceId(idToDelete);

Java

// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";

FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();

Python

  from firebase_admin import instance_id

  # An FID sent from a client service SDK
  id_to_delete = 'eyJhbGciOiJFUzI1N_iIs5'

  instance_id.delete_instance_id(id_to_delete)

Go

client, err := app.InstanceId(ctx)
if err != nil {
  log.Fatalln("error initializing client", err)
}

iidToDelete := "eyJhbGciOiJFUzI1N_iIs5"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
  log.Fatalln("error deleting FID", err)
}

Cuando borras un ID de instalación de Firebase con una llamada a la API del servidor, los servicios de Firebase borran los datos asociados, dejan de aceptar datos nuevos de ese ID durante uno o dos días y, luego, notifican a la app cliente que se borró el ID. Hasta que Firebase notifique a la app cliente, es posible que algunos de los servicios de la app se orienten al ID. Por ejemplo, una instancia de app puede seguir recibiendo notificaciones de FCM durante algunas horas.

Si deseas borrar el ID de instalación actual de Firebase y usar los servicios de Firebase de inmediato con un ID nuevo que no tenga ninguna relación, usa la API del cliente para controlar esta acción.

Recupera identificadores de instancias de la app

Si debes identificar instalaciones particulares de tu app, podrás hacerlo recuperando el ID de instalación de Firebase. Por ejemplo, para realizar pruebas durante el desarrollo de Firebase In‑App Messaging, puedes usar el ID de instalación de Firebase del dispositivo de prueba correcto para identificarlo y orientarte a él.

Sigue estos pasos para recuperar un ID de instalación de Firebase:

Swift

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

Objective‑C

[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) {
  if (error != nil) {
    NSLog(@"Error fetching Installation ID %@", error);
    return;
  }
  NSLog(@"Installation ID: %@", identifier);
}];

Java

FirebaseInstallations.getInstance().getId()
        .addOnCompleteListener(new OnCompleteListener<String>() {
    @Override
    public void onComplete(@NonNull Task<String> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation ID: " + task.getResult());
        } else {
            Log.e("Installations", "Unable to get Installation ID");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().id.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d("Installations", "Installation ID: " + task.result)
    } else {
        Log.e("Installations", "Unable to get Installation ID");
    }
}

JavaScript

const installationId = await firebase.installations().getId();
console.log(installationId);

Recupera tokens de autenticación del FIS

Los servicios de Firebase pueden autenticar instalaciones de Firebase con tokens de autenticación obtenidos del FIS. Por ejemplo, cuando diseñas pruebas A/B para Remote Config, puedes autenticar un dispositivo de prueba orientado con un token de autenticación del FIS.

Los tokens de autenticación del FIS son tokens del portador de corta duración en formato JSON de token web (JWT) que contienen la siguiente información sobre la instalación:

  • El ID de instalación de Firebase
  • El proyecto asociado (projectNumber)
  • El ID de aplicación de Firebase asociado (appId)
  • La fecha de vencimiento del token

No se pueden revocar los tokens de autenticación del FIS y son válidos hasta su fecha de vencimiento. La vida útil predeterminada del token es de una semana.

Sigue estos pasos para recuperar un token de autenticación del FIS:

Swift

Installations.installations().authTokenForcingRefresh(true, completion: { (token, error) in
  if let error = error {
    print("Error fetching token: \(error)")
    return
  }
  guard let token = token else { return }
  print("Installation auth token: \(token)")
})

Objective‑C

[[FIRInstallations installations] authTokenForcingRefresh:true
                                               completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
  if (error != nil) {
    NSLog(@"Error fetching Installation token %@", error);
    return;
  }
  NSLog(@"Installation auth token: %@", [result authToken]);
}];

Java

FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
        .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
    @Override
    public void onComplete(@NonNull Task<InstallationTokenResult> task) {
        if (task.isSuccessful() && task.getResult() != null) {
            Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
        } else {
            Log.e("Installations", "Unable to get Installation auth token");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().getToken(/* forceRefresh */ true)
    .addOnCompleteListener {task ->
        if (task.isSuccessful) {
            Log.d("Installations", "Installation auth token: " + task.result?.token)
        } else {
            Log.e("Installations", "Unable to get Installation auth token");
        }
    }

JavaScript

const installationToken = await firebase.installations()
    .getToken(/* forceRefresh */ true);
console.log(installationToken);

Instalaciones de Firebase e ID de instancia

FIS tiene retrocompatibilidad con el identificador heredado del ID de la instancia de Firebase para el uso interno y la limpieza de datos. Borrar un IID es un método alternativo de limpiar los datos con estos SDK de Firebase:

  • iOS 6.14.0 y versiones anteriores
  • SDK de Android anteriores al 27 de febrero de 2020

Si deseas limpiar los datos con los SDK de iOS y Android más recientes, se recomienda que actualices tu código para usar FIS, pero no es obligatorio que lo hagas.

Si actualmente tu app usa el SDK de ID de instancia mediante una dependencia indirecta para recuperar ID, puedes actualizar tu código a fin de usar las instalaciones de Firebase, o bien actualizar tu aplicación para agregar una dependencia directa del SDK de ID de instancia.