> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Registro con Firebase Installation ID

> Comprenda el registro con Firebase Installation ID (FID) en Android, cómo saber si está habilitado en su aplicación y qué requiere OneSignal.

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.

> [!WARNING]
>
> `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](https://firebase.google.com/docs/cloud-messaging/android/client#access-fcm-registration-token) 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`](#34-fid-registration-failed).
* **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](https://firebase.google.com/docs/cloud-messaging/android/client#enable-registration-via-firebase-installation-id) y [Conflicto con el SDK de Firebase Messaging](https://documentation.onesignal.com/docs/es/notifications-show-successful-but-are-not-being-shown.md#firebase-messaging-sdk-conflict) 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](#requirements).
* **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**

```bash theme={null}
./gradlew :app:processDebugManifest
```

**2. Buscar en el resultado fusionado**

```bash theme={null}
grep -r "firebase_messaging_installation_id_enabled" app/build/intermediates/ --include=AndroidManifest.xml
```

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](#disable-fid-registration).

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](https://documentation.onesignal.com/docs/es/capturing-a-debug-log.md) no los mostrará en un dispositivo sin problemas. Use el manifiesto fusionado para confirmar la configuración.

> [!NOTE]
>
> **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](#troubleshooting).

* **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](#minimum-onesignal-sdk-versions)
* **`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](#using-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](#step-1-add-google-services-json-to-your-app)
* **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](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md#match-your-firebase-projects)

#### 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.

| SDK | Versión mínima | Notas |
| - | - | - |
| Android (nativo) | `5.11.0` | |
| Flutter | `5.7.2` | |
| React Native | `5.5.16` | |
| Expo | `react-native-onesignal` `5.5.16` | `onesignal-expo-plugin` `2.8.0` agrega la propiedad `enableFirebaseInstallationId`, que escribe la configuración del manifiesto por usted. Requiere una compilación de desarrollo. Expo Go no es compatible |
| Cordova | `5.6.2` | |
| Capacitor | `1.2.2` | |
| Unity | `5.4.2` | |
| .NET / MAUI | `6.4.2` | |

### 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`](#6-sender-id-mismatch). 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](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md#add-your-firebase-configuration-file) 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:

```kotlin app/build.gradle.kts theme={null}
implementation("com.google.firebase:firebase-messaging:[25.1.2, 25.99.99]")
```

```groovy app/build.gradle theme={null}
implementation 'com.google.firebase:firebase-messaging:[25.1.2, 25.99.99]'
```

#### 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:

```bash theme={null}
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep firebase-messaging
```

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

Agregue esto dentro de la etiqueta `<application>` de su `AndroidManifest.xml`:

```xml AndroidManifest.xml theme={null}
<meta-data
    android:name="firebase_messaging_installation_id_enabled"
    android:value="true" />
```

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**.

> [!TIP]
>
> 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](#troubleshooting).

***

## Deshabilitar el registro con FID \\

El método que necesita depende de dónde proviene la configuración.

> [tab] Usted la agregó
>
> Elimine el elemento `<meta-data>` de su `AndroidManifest.xml` y vuelva a compilar.

> [tab] Una dependencia la agregó
>
> Si la configuración llega mediante la fusión de manifiestos, eliminar su propia entrada no sirve de nada, porque no existe. En su lugar, sobrescriba el valor fusionado. Un valor `false` con `tools:replace` gana la fusión, así que un `true` de una dependencia nunca surte efecto:
>
> ```xml AndroidManifest.xml theme={null}
> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
>     xmlns:tools="http://schemas.android.com/tools">
>
>     <application>
>         <meta-data
>             android:name="firebase_messaging_installation_id_enabled"
>             android:value="false"
>             tools:replace="android:value" />
>     </application>
> </manifest>
> ```
>
> Vuelva a compilar y revise de nuevo el manifiesto fusionado para confirmar que el valor ahora es `false`.

> [!WARNING]
>
> 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.

| Estado | Significado | Solución |
| - | - | - |
| `-32` | El registro con FID está habilitado, pero su aplicación no tiene una `FirebaseApp` predeterminada | [Agregar la configuración de Firebase](#32-no-default-firebase-app) |
| `-33` | El registro con FID está habilitado, pero `FirebaseMessaging.register()` no está disponible | [Actualizar firebase-messaging](#33-register-api-unavailable) |
| `-34` | El registro con FID falló o los servicios de Google Play están desactualizados | [Actualizar los servicios de Google Play](#34-fid-registration-failed) |
| `-6` | El Sender ID no coincide entre su aplicación y OneSignal | [Hacer coincidir sus proyectos de Firebase](#6-sender-id-mismatch) |

### -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](https://console.firebase.google.com/) 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](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md#add-your-firebase-configuration-file).
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](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md#add-your-firebase-configuration-file).
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](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md#set-up-firebase-without-google-services-json).

Si no tenía intención de usar el registro con FID, [deshabilítelo](#disable-fid-registration).

### -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](#requirements).

2. **Compruebe la versión resuelta.** Otra dependencia puede estar fijando una versión anterior:

   ```bash theme={null}
   ./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep firebase-messaging
   ```

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](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md#match-your-firebase-projects). 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ó.

> [!WARNING]
>
> 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?](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md#what-happens-if-i-skip-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`](#6-sender-id-mismatch).

### ¿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

> [card] [Credenciales de Android Firebase](https://documentation.onesignal.com/docs/es/android-firebase-credentials.md)
>
> Cargue su clave privada de Service Account de FCM y agregue `google-services.json` a su aplicación.

> [card] [Configuración del SDK de Android](https://documentation.onesignal.com/docs/es/android-sdk-setup.md)
>
> Instale e inicialice el SDK de Android de OneSignal.

> [card] [Subscriptions](https://documentation.onesignal.com/docs/es/subscriptions.md)
>
> Consulte los estados de Subscription, incluidos `-6` y los estados de FID `-32` a `-34`.

> [card] [Capturar un registro de depuración](https://documentation.onesignal.com/docs/es/capturing-a-debug-log.md)
>
> Recopile registros detallados del SDK para ver errores de registro.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.