Saltar al contenido principal
El registro con Firebase Installation ID (FID) es una función de Firebase, introducida en firebase-messaging 25.1.x, que reemplaza el token de registro de FCM heredado por un Firebase Installation ID. Se controla mediante una configuración del manifiesto llamada firebase_messaging_installation_id_enabled. Esta es una configuración de Firebase, no de OneSignal. OneSignal la lee para decidir cómo registrarse para push, pero no la define, no puede cambiarla y no puede aplicarla solo a OneSignal.
firebase_messaging_installation_id_enabled se aplica a toda su aplicación. Cuando es true, Firebase deshabilita getToken() para todos los SDK de su proceso: OneSignal, cualquier otro SDK de terceros y su propio código de Firebase.Como Android fusiona los manifiestos de sus dependencias, otro SDK puede habilitarla por usted. Es posible que esté en esta ruta sin haberla elegido.

¿Debería habilitarlo? \

El registro con FID es opcional, pero recomendado. Google ha declarado obsoletos los tokens de registro de FCM en favor de los Firebase Installation IDs, así que todas las aplicaciones tendrán que migrar en algún momento. El cambio mantiene a sus usuarios existentes suscritos y recibiendo mensajes, y OneSignal sigue enviando a través de su Service Account de FCM. Cada dispositivo reemplazará el token de registro de FCM heredado por el nuevo valor de token de push (FID) en su próximo inicio.

Antes de activarlo \

Revise estos puntos antes de habilitar el registro con FID:
  • Dispositivos antiguos. El registro con FID requiere servicios de Google Play 261200000 o posterior. Los dispositivos que ya están suscritos conservan su token de push actual. Las instalaciones nuevas en dispositivos Android antiguos, o en dispositivos que no reciben actualizaciones de los servicios de Google Play, no pueden recibir push hasta que se actualicen los servicios de Google Play. Muestran el estado de notification_type -34.
  • Otros SDK de push. La configuración se aplica a toda su aplicación y deshabilita getToken() y deleteToken() para todos los SDK. Esto afecta principalmente a otros SDK que envían notificaciones push. Compruebe que cada uno sea compatible con Firebase Installation IDs.
  • Formato del token de push. OneSignal.User.pushSubscription.token e IPushSubscriptionObserver devuelven un Firebase Installation ID en lugar de un token de registro de FCM. El tipo de la propiedad no cambia, así que nada falla en tiempo de compilación. Cualquier código que almacene, valide o envíe ese valor como token de FCM deja de funcionar sin mostrar un error.
  • Integraciones personalizadas de Firebase. Si su aplicación tiene su propio FirebaseMessagingService, Firebase llama a onRegistered() en lugar de onNewToken(). Mueva su gestión de tokens a onRegistered(). Si su aplicación llama a deleteToken() (al cerrar sesión, por ejemplo), cámbielo por unregister(). OneSignal no necesita ninguna de las dos devoluciones de llamada. Consulte la guía de Firebase sobre el registro mediante Firebase Installation ID y Conflicto con el SDK de Firebase Messaging para usarlo junto con OneSignal.
  • Requisitos de compilación. Su aplicación debe declarar firebase-messaging 25.1.2 o posterior y usar minSdk 23 o superior. En firebase-messaging 26.x, su aplicación necesita minSdk 24 o superior y Kotlin 2.0.0 o posterior. Consulte Requisitos.
  • Revertir requiere una nueva versión. La configuración forma parte de la compilación de su aplicación. Activarla o desactivarla requiere una nueva compilación y una nueva publicación en la tienda. No existe un interruptor del lado del servidor.

¿Está habilitado en su aplicación? \

Revise el manifiesto fusionado, no solo su propio AndroidManifest.xml. Una dependencia puede agregar esta configuración sin que aparezca en su código fuente.
1

Compilar el manifiesto fusionado

2

Buscar en el resultado fusionado

Una coincidencia de grep no es suficiente. Lea el android:value fusionado. El registro con FID solo está habilitado cuando ese valor es el booleano true.Si no hay una entrada meta-data, o el valor fusionado es false, está en la ruta de token heredada. Para forzar el valor a false cuando una dependencia lo establece en true, consulte Deshabilitar el registro con FID.
Cuando el registro falla, el error incluye el valor del manifiesto, si se encontró una FirebaseApp predeterminada y si register() está disponible. Un registro correcto no registra esos tres datos, así que el registro detallado no los mostrará en un dispositivo sin problemas. Use el manifiesto fusionado para confirmar la configuración.
SDK conocidos que habilitan esta configuración. El SDK de Android de Braze 43.0.0 y posteriores agregan firebase_messaging_installation_id_enabled="true" mediante la fusión de manifiestos. Si su aplicación incluye Braze 43+, el registro con FID está habilitado tanto si agregó la configuración usted mismo como si no.

Habilitar el registro con FID \

Para habilitar el registro con FID, dé a su aplicación su propia configuración de Firebase, exija firebase-messaging 25.1.2 o posterior y active la configuración del manifiesto. Luego confirme que los dispositivos se registran con un Firebase Installation ID.

Requisitos \

El registro con FID requiere todo lo siguiente. Si falta algo, el registro falla con uno de los estados de Solución de problemas.
  • SDK de Android de OneSignal 5.11.0 o posterior, o una versión de SDK contenedor que lo incluya. Consulte Versiones mínimas del SDK de OneSignal
  • com.google.firebase:firebase-messaging 25.1.2 o posterior, declarado por su aplicación. Las versiones 25.1.x anteriores tienen errores de registro, incluidos fallos tras restaurar una copia de seguridad o al clonar los datos de la aplicación
  • Android API 23+ (firebase-messaging 25.0.0 elevó el mínimo de 21 a 23). En firebase-messaging 26.x, API 24+ y Kotlin 2.0.0 o posterior. Consulte Usar firebase-messaging 26.x
  • Servicios de Google Play versión 261200000 o posterior en el dispositivo
  • Una FirebaseApp predeterminada para su propio proyecto de Firebase. Consulte Paso 1: Agregar google-services.json a su aplicación
  • Proyectos de Firebase coincidentes. El proyecto de su google-services.json debe ser el mismo proyecto que el Service Account de FCM cargado en OneSignal. Consulte Hacer coincidir sus proyectos de Firebase

Versiones mínimas del SDK de OneSignal \

La compatibilidad con el registro con FID llegó en el SDK de Android de OneSignal 5.11.0. Cada SDK contenedor de la lista es la primera versión que lo incluye. Las versiones anteriores solo usan la ruta de token heredada, así que con la configuración activada, el registro de push falla en esas versiones.

Paso 1: Agregar google-services.json a su aplicación \

El registro con FID necesita los datos de su proyecto de Firebase del lado del cliente. Descargue google-services.json del mismo proyecto de Firebase que el Service Account de FCM cargado en OneSignal. Si los proyectos no coinciden, el registro falla con -6. Agregue el archivo a su aplicación y aplique el plugin de Gradle de Google Services. La ubicación del archivo depende de su aplicación. Consulte Agregar su archivo de configuración de Firebase para ver los pasos. Es posible que ya lo tenga.

Paso 2: Declarar firebase-messaging 25.1.2 o posterior \

OneSignal compila con firebase-messaging 24.x, que usa FirebaseMessaging.getToken() para los tokens de registro de FCM heredados. El registro con FID usa FirebaseMessaging.register(), que necesita firebase-messaging 25.1.2 o posterior. Para actualizar firebase-messaging, agregue esto al archivo Gradle del módulo de su aplicación:

Usar firebase-messaging 26.x \

El rango [25.1.2, 25.99.99] mantiene su aplicación en 25.x, que no tiene requisitos adicionales. Si su aplicación u otra dependencia incorpora firebase-messaging 26.x, Gradle resuelve a 26.x y su aplicación también necesita:
  • minSdk 24 o superior
  • Kotlin 2.0.0 o posterior
Compruebe qué versión resuelve su aplicación:

Paso 3: Agregar la configuración del manifiesto de Firebase \

Agregue esto dentro de la etiqueta <application> de su AndroidManifest.xml:
AndroidManifest.xml
En Expo, establezca enableFirebaseInstallationId: true en la configuración de onesignal-expo-plugin (versión 2.8.0 o posterior) y luego ejecute expo prebuild.

Paso 4: Verificar el registro con FID \

Compile y ejecute en un dispositivo y luego revise el Push Token en el registro o en Dashboard > Audience > Subscriptions.
Su Subscription de OneSignal debe estar en Subscribed y el token de push debe ser un Firebase Installation ID corto como cXp9fY-TRFCLSy9kVTqorZ, no un token de FCM heredado más largo con dos puntos como dN8Ya5MTR2OO-0BXdqimCI:APA91bFw.... Si el estado es negativo, consulte Solución de problemas.

Deshabilitar el registro con FID \

El método que necesita depende de dónde proviene la configuración.
Elimine el elemento <meta-data> de su AndroidManifest.xml y vuelva a compilar.
Deshabilitar el registro con FID afecta a todos los SDK de su aplicación, no solo a OneSignal. Si otro SDK depende del registro con FID, revise su documentación antes de desactivar la configuración.
Los dispositivos se vuelven a registrar en el siguiente inicio de la aplicación. Las Subscriptions existentes se conservan y reciben un nuevo valor de token.

Solución de problemas \

Busque la Subscription en Dashboard > Audience > Subscriptions y revise su estado. Cada estado de la lista tiene una causa y una solución. Después de corregir la configuración y publicar una nueva compilación, la misma Subscription se recupera en una sesión posterior. No hace falta reinstalar y no se crea una Subscription nueva.

-32: No hay una aplicación de Firebase predeterminada \

El registro con FID requiere la FirebaseApp predeterminada propia de su aplicación. El proyecto de Firebase compartido de OneSignal no puede generar un installation ID. Causas más comunes, en orden:
  1. Falta google-services.json. Descárguelo de su consola de Firebase en Project settings > Your apps y agréguelo a su aplicación. Las aplicaciones Android nativas usan el directorio app/. Otras plataformas usan rutas diferentes. Consulte Agregar su archivo de configuración de Firebase.
  2. El plugin de Gradle de Google Services no está aplicado. El archivo por sí solo no hace nada. El plugin lo convierte en los recursos que Firebase lee en tiempo de ejecución. Consulte Agregar su archivo de configuración de Firebase.
  3. El plugin está aplicado en el archivo Gradle incorrecto. El apply debe estar en el build.gradle del módulo de su aplicación, no en el archivo de nivel de proyecto.
  4. La inicialización programática se ejecutó demasiado tarde o no se ejecutó. Si inicializa la aplicación predeterminada usted mismo (por ejemplo, porque condiciona Firebase al consentimiento del usuario), debe completarse antes de que se inicialice OneSignal. Consulte Configurar Firebase sin google-services.json.
Si no tenía intención de usar el registro con FID, deshabilítelo.

-33: La API register no está disponible \

La API FirebaseMessaging.register() no existe en la versión de firebase-messaging que resolvió su aplicación, o se eliminó de su compilación de lanzamiento.
  1. Declare firebase-messaging 25.1.2 o posterior. register() apareció por primera vez en 25.1.0 y OneSignal compila con 24.x, así que su aplicación tiene que incorporar la biblioteca más reciente. Use 25.1.2 o posterior en lugar de 25.1.0 o 25.1.1. Consulte Requisitos.
  2. Compruebe la versión resuelta. Otra dependencia puede estar fijando una versión anterior:
  3. Si solo ocurre en compilaciones de lanzamiento, R8 eliminó o renombró el método. Confirme que las reglas de ProGuard para consumidores de OneSignal estén aplicadas y que no las haya deshabilitado.

-34: El registro con FID falló \

Este estado admite reintentos. El SDK vuelve a intentarlo en una sesión posterior.
  1. Los servicios de Google Play están desactualizados. El registro con FID requiere la versión 261200000 o posterior. Por debajo de esa versión, Firebase solicita un token heredado en lugar de registrar el installation ID, y ese token nunca está disponible para su aplicación. El SDK falla en lugar de informar una Subscription que no puede recibir push. Actualice los servicios de Google Play en el dispositivo desde Play Store.
  2. Un fallo transitorio de Firebase. No es necesario hacer nada. El registro se recupera en un inicio posterior de la aplicación.

-6: El Sender ID no coincide \

Se muestra en el panel como Invalid Google Project Number. El proyecto de Firebase de su aplicación y el Service Account de FCM cargado en OneSignal no son el mismo proyecto. Una discrepancia de proyecto solo provoca este estado con el registro con FID activado. En la ruta de token heredada, la misma discrepancia no falla y el SDK se registra a través del proyecto de Firebase compartido de OneSignal. Por eso -6 puede aparecer justo después de habilitar el registro con FID, aunque push funcionara antes. Compare los dos proyectos con Hacer coincidir sus proyectos de Firebase. Si los valores difieren, cargue el Service Account del proyecto de Firebase correcto o incluya el google-services.json del proyecto cuyo Service Account cargó.
A diferencia de los demás estados, -6 marca las Subscriptions existentes como no válidas. Corrija la configuración y publique una compilación actualizada; los dispositivos se vuelven a registrar y regresan a Subscribed en el siguiente inicio.

Preguntas frecuentes

¿Necesito google-services.json aunque no use FID? \

Push funciona sin él hoy, pero debería agregarlo. Agregar el archivo no activa la configuración del manifiesto. Consulte ¿Qué sucede si omito google-services.json?

¿Perderé mis Subscriptions existentes? \

No. Los dispositivos se vuelven a registrar en el siguiente inicio de la aplicación y conservan la misma Subscription, con un nuevo valor de token de push. Esto se aplica en ambas direcciones, al habilitar y al deshabilitar. La excepción es una discrepancia de proyecto de Firebase, que marca las Subscriptions existentes como no válidas hasta que publique una corrección. Consulte -6.

¿Puedo habilitar el registro con FID solo para OneSignal? \

No. La configuración se aplica a todo el proceso y deshabilita getToken() para todos los SDK. El registro con installation ID solo puede usar su FirebaseApp predeterminada. La aplicación compartida de OneSignal no puede generar ese ID.

¿Por qué cambió el formato de mi token de push? \

Su aplicación ahora se registra con un Firebase Installation ID. Los Installation IDs son cortos y sin dos puntos, como cXp9fY-TRFCLSy9kVTqorZ. Los tokens de FCM heredados son más largos y contienen dos puntos, como dN8Ya5MTR2OO-0BXdqimCI:APA91bFw....

Páginas relacionadas

Credenciales de Android Firebase

Cargue su clave privada de Service Account de FCM y agregue google-services.json a su aplicación.

Configuración del SDK de Android

Instale e inicialice el SDK de Android de OneSignal.

Subscriptions

Consulte los estados de Subscription, incluidos -6 y los estados de FID -32 a -34.

Capturar un registro de depuración

Recopile registros detallados del SDK para ver errores de registro.