Los ID de instancia identifican las instalaciones individuales de una app. Como cada ID de instancia es exclusivo de una app y un dispositivo determinados, los servicios de Firebase utilizan estos ID para hacer referencia a instancias específicas de las apps. Por ejemplo, Cloud Messaging utiliza los ID de instancia para determinar a qué dispositivos debe enviar los mensajes.
Varios servicios de Firebase utilizan los ID de instancia para potenciar sus características:
- Analytics
- Crashlytics
- Cloud Messaging
- Remote Config
Administra datos de apps asociados con ID de instancia
Los servicios que utilizan ID de instancia para identificar instalaciones también los utilizan como una clave para asociar datos pertinentes a un dispositivo. Por ejemplo, Crashlytics utiliza ID de instancia para registrar los bloqueos que se producen en el dispositivo, Remote Config los utiliza para obtener configuraciones y Analytics utiliza ID de instancia para realizar el seguimiento de públicos determinados.
Por lo general, los datos asociados con ID de instancia no proporcionan información de identificación personal, pero los usuarios tienen la opción de administrarlos. Con ese fin, Firebase ofrece dos formas de administrar la colección de estos datos:
- Borra ID de instancia. Puedes borrar un ID de instancia con una llamada a la API del lado del servidor o del cliente. Cuando se borra un ID de instancia, este desaparece junto con todos los datos asociados a él.
- Inhabilita los servicios que generan ID. La mayoría de los servicios de Firebase que usan ID de instancia generan automáticamente un nuevo ID si no existe uno en el dispositivo cuando se inician. Para evitar que tu app cree ID de instancia no deseados, inhabilita la inicialización automática en esos servicios.
Cómo borrar un ID de instancia
Cuando se borra un ID de instancia, también se eliminan los datos asociados a él en cualquiera de los servicios de Firebase mencionados anteriormente. Por eso, la eliminación de ID es una herramienta útil para borrar datos del usuario, pero también conlleva una salvedad: si se usan varios servicios que dependen del ID de instancia, la eliminación de un ID borra los datos de todos ellos.
El servicio de ID de instancia crea un nuevo ID en unos días, a menos que se inhabiliten todos los servicios que generan ID de instancia en la app. Firebase considera que el ID recién creado es una instancia completamente nueva de la app y no lo asocia de modo alguno con el ID anterior.
Borra un ID con una llamada a la API de cliente
Para borrar los ID generados por servicios de Firebase, llame al método apropiado desde la API de ID de instancia de Firebase:
Swift
InstanceID.instanceID().deleteID { error in
if let error = error {
print("Error deleting instance ID: \(error)")
}
}
Objective-C
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
Android
FirebaseInstanceId.deleteInstanceId();
Borra un ID con una llamada a la API de servidor
Para borrar un ID de instancia con llamadas a la API de servidor, agrega el SDK de Firebase Admin a tu servidor, si todavía no lo hiciste.
Una vez agregado el SDK, borra el ID a través de una llamada a la función de eliminación de ID de instancia en tu lenguaje preferido:
Node.js
// An Instance ID sent from a client service SDK
const idToDelete = 'INSTANCE_ID';
admin.instanceId().deleteInstanceId(idToDelete);
Java
// An Instance ID sent from a client service SDK
String idToDelete = "INSTANCE_ID";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
Python
from firebase_admin import instance_id
# An Instance ID sent from a client service SDK
id_to_delete = 'INSTANCE_ID'
instance_id.delete_instance_id(id_to_delete)
Go
client, err := app.InstanceId(ctx)
if err != nil {
log.Fatalln("error initializing client", err)
}
iidToDelete := "INSTANCE_ID"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
log.Fatalln("error deleting iid", err)
}
Cuando se borra un ID de instancia con una llamada a la API de servidor, los servicios de Firebase borran los datos asociados, dejan de aceptar nuevos datos para ese ID y, en unos días, 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 experimenten una funcionalidad reducida.
Si deseas borrar el ID de instancia actual y utilizar inmediatamente los servicios de Firebase con un ID independiente nuevo, utiliza una de las API de cliente anteriores para realizar la eliminación.
Cómo inhabilitar la generación de ID de instancia
Los servicios que usan ID de instancia generan automáticamente un nuevo ID cuando se inicializan en una app que no tiene uno. Generalmente, esos servicios también se inicializan automáticamente cuando se inicia la app. Para inhabilitar la generación de ID de instancia, debes inhabilitar la inicialización automática en los servicios que utilizan ID.
Un enfoque común es brindar a los usuarios la opción de habilitar la recopilación de datos: inhabilitar la inicialización automática en los servicios que utilizan ID de instancia, implementar un diálogo que solicite a los usuarios su consentimiento para la recopilación de datos y volver a habilitar los servicios manualmente una vez que dan su consentimiento.
Lee las guías que se indican a continuación para descubrir la forma de inhabilitar la inicialización automática en los servicios que utilizan ID de instancia y, en lugar de eso, inicializarlos manualmente:
- Cloud Messaging: Evita la inicialización automática (Android o iOS+).
- Crash Reporting: Habilita los informes de aceptación.
- Analytics: Configura la recopilación de datos de Analytics.