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

# Enregistrement par Firebase Installation ID

> Comprenez l'enregistrement par Firebase Installation ID (FID) sur Android, comment savoir s'il est activé dans votre application et ce que OneSignal exige.

L'enregistrement par Firebase Installation ID (FID) est une fonctionnalité **Firebase**, introduite dans `firebase-messaging` 25.1.x, qui remplace le jeton d'enregistrement FCM hérité par un Firebase Installation ID.

Il est contrôlé par un paramètre de manifeste nommé `firebase_messaging_installation_id_enabled`. **Il s'agit d'un paramètre Firebase, pas d'un paramètre OneSignal.** OneSignal le lit pour décider comment s'enregistrer pour le push, mais ne le définit pas, ne peut pas le modifier et ne peut pas l'appliquer uniquement à OneSignal.

> [!WARNING]
>
> `firebase_messaging_installation_id_enabled` s'applique à **l'ensemble de votre application**. Lorsqu'il vaut `true`, Firebase désactive `getToken()` pour tous les SDK de votre processus : OneSignal, tout autre SDK tiers et votre propre code Firebase.
>
> Comme Android fusionne les manifestes de vos dépendances, **un autre SDK peut l'activer à votre place.** Vous utilisez peut-être ce chemin sans l'avoir choisi.

***

## Faut-il l'activer ? \\

L'enregistrement FID est facultatif mais **recommandé**. Google a [rendu obsolètes les jetons d'enregistrement FCM](https://firebase.google.com/docs/cloud-messaging/android/client#access-fcm-registration-token) au profit des Firebase Installation IDs, donc toutes les applications devront migrer à terme. Le passage conserve vos utilisateurs existants abonnés et recevant des messages, et OneSignal continue d'envoyer via votre compte de service FCM. Chaque appareil remplacera le jeton d'enregistrement FCM hérité par la nouvelle valeur de jeton push (FID) lors de son prochain lancement.

### Avant de l'activer \\

Passez en revue ces points avant d'activer l'enregistrement FID :

* **Appareils plus anciens.** L'enregistrement FID nécessite les services Google Play `261200000` ou version ultérieure. Les appareils déjà abonnés conservent leur jeton push actuel. Les nouvelles installations sur des appareils Android plus anciens, ou sur des appareils qui ne reçoivent pas les mises à jour des services Google Play, ne peuvent pas recevoir de push tant que les services Google Play ne sont pas mis à jour. Ils affichent le statut notification\_type [`-34`](#34-fid-registration-failed).
* **Autres SDK push.** Le paramètre s'applique à toute votre application et désactive `getToken()` et `deleteToken()` pour tous les SDK. Cela concerne surtout les autres SDK qui envoient des notifications push. Vérifiez que chacun prend en charge les Firebase Installation IDs.
* **Format du jeton push.** `OneSignal.User.pushSubscription.token` et `IPushSubscriptionObserver` renvoient un Firebase Installation ID au lieu d'un jeton d'enregistrement FCM. Le type de la propriété ne change pas, donc rien n'échoue à la compilation. Tout code qui stocke, valide ou envoie cette valeur comme jeton FCM cesse de fonctionner sans erreur.
* **Intégrations Firebase personnalisées.** Si votre application possède son propre `FirebaseMessagingService`, Firebase appelle `onRegistered()` au lieu de `onNewToken()`. Déplacez votre gestion des jetons vers `onRegistered()`. Si votre application appelle `deleteToken()` (lors de la déconnexion, par exemple), passez à `unregister()`. OneSignal n'a besoin d'aucun de ces rappels. Consultez le guide Firebase sur l'[enregistrement via Firebase Installation ID](https://firebase.google.com/docs/cloud-messaging/android/client#enable-registration-via-firebase-installation-id), et [Conflit avec le SDK Firebase Messaging](https://documentation.onesignal.com/docs/fr/notifications-show-successful-but-are-not-being-shown.md#firebase-messaging-sdk-conflict) pour l'utiliser avec OneSignal.
* **Exigences de build.** Votre application doit déclarer `firebase-messaging` 25.1.2 ou version ultérieure et utiliser `minSdk` 23 ou supérieur. Avec `firebase-messaging` 26.x, votre application nécessite `minSdk` 24 ou supérieur et Kotlin 2.0.0 ou version ultérieure. Consultez [Prérequis](#requirements).
* **Un retour arrière nécessite une nouvelle version.** Le paramètre fait partie du build de votre application. L'activer ou le désactiver nécessite un nouveau build et une nouvelle publication sur le store. Il n'existe pas d'interrupteur côté serveur.

***

## Est-il activé dans votre application ? \\

Vérifiez le manifeste **fusionné**, pas seulement votre propre `AndroidManifest.xml`. Une dépendance peut ajouter ce paramètre sans qu'il apparaisse dans votre code source.

**1. Générer le manifeste fusionné**

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

**2. Rechercher dans le résultat fusionné**

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

Un résultat grep ne suffit pas. Lisez la valeur `android:value` fusionnée. L'enregistrement FID n'est activé que lorsque cette valeur est le booléen `true`.

Aucune entrée `meta-data`, ou une valeur fusionnée à `false`, signifie que vous êtes sur le chemin des jetons hérités. Pour forcer la valeur à `false` lorsqu'une dépendance la définit sur `true`, consultez [Désactiver l'enregistrement FID](#disable-fid-registration).

Lorsque l'enregistrement échoue, l'erreur inclut la valeur du manifeste, si une `FirebaseApp` par défaut a été trouvée et si `register()` est disponible. Un enregistrement réussi ne consigne pas ces trois éléments, donc la [journalisation détaillée](https://documentation.onesignal.com/docs/fr/capturing-a-debug-log.md) ne les affichera pas sur un appareil sain. Utilisez le manifeste fusionné pour confirmer le paramètre.

> [!NOTE]
>
> **SDK connus qui activent ce paramètre.** Le SDK Android Braze 43.0.0 et versions ultérieures ajoutent `firebase_messaging_installation_id_enabled="true"` par fusion des manifestes. Si votre application inclut Braze 43+, l'enregistrement FID est activé, que vous ayez ajouté le paramètre vous-même ou non.

***

## Activer l'enregistrement FID \\

Pour activer l'enregistrement FID, donnez à votre application sa propre configuration Firebase, exigez `firebase-messaging` 25.1.2 ou version ultérieure et activez le paramètre de manifeste. Vérifiez ensuite que les appareils s'enregistrent avec un Firebase Installation ID.

### Prérequis \\

L'enregistrement FID nécessite tous les éléments suivants. S'il en manque un, l'enregistrement échoue avec l'un des statuts de la section [Dépannage](#troubleshooting).

* **SDK Android OneSignal** `5.11.0` ou version ultérieure, ou une version de SDK wrapper qui l'inclut. Consultez [Versions minimales du SDK OneSignal](#minimum-onesignal-sdk-versions)
* **`com.google.firebase:firebase-messaging`** `25.1.2` ou version ultérieure, déclaré par votre application. Les versions 25.1.x antérieures présentent des bugs d'enregistrement, notamment des échecs après une restauration de sauvegarde ou lorsque les données de l'application sont clonées
* **Android API 23+** (`firebase-messaging` 25.0.0 a relevé le minimum de 21 à 23). Avec `firebase-messaging` 26.x, API 24+ et Kotlin 2.0.0 ou version ultérieure. Consultez [Utiliser firebase-messaging 26.x](#using-firebase-messaging-26-x)
* **Services Google Play** version `261200000` ou ultérieure sur l'appareil
* **Une `FirebaseApp` par défaut pour votre propre projet Firebase.** Consultez [Étape 1 : Ajouter google-services.json à votre application](#step-1-add-google-services-json-to-your-app)
* **Des projets Firebase correspondants.** Le projet de votre `google-services.json` doit être le même que celui du compte de service FCM téléversé dans OneSignal. Consultez [Faire correspondre vos projets Firebase](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md#match-your-firebase-projects)

#### Versions minimales du SDK OneSignal \\

La prise en charge de l'enregistrement FID est arrivée avec le SDK Android OneSignal `5.11.0`. Chaque SDK wrapper ci-dessous indique la première version qui l'inclut. Les versions plus anciennes n'utilisent que le chemin des jetons hérités ; avec le paramètre activé, l'enregistrement push échoue donc sur ces versions.

| SDK | Version minimale | Remarques |
| - | - | - |
| Android (natif) | `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` ajoute la propriété `enableFirebaseInstallationId`, qui écrit le paramètre de manifeste à votre place. Nécessite un build de développement. Expo Go n'est pas pris en charge |
| Cordova | `5.6.2` | |
| Capacitor | `1.2.2` | |
| Unity | `5.4.2` | |
| .NET / MAUI | `6.4.2` | |

### Étape 1 : Ajouter google-services.json à votre application \\

L'enregistrement FID a besoin des détails de votre projet Firebase côté client. Téléchargez `google-services.json` depuis le même projet Firebase que le compte de service FCM téléversé dans OneSignal. Si les projets ne correspondent pas, l'enregistrement échoue avec [`-6`](#6-sender-id-mismatch). Ajoutez le fichier à votre application et appliquez le plugin Gradle Google Services. L'emplacement du fichier dépend de votre application. Consultez [Ajouter votre fichier de configuration Firebase](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md#add-your-firebase-configuration-file) pour les étapes. Vous l'avez peut-être déjà.

### Étape 2 : Déclarer firebase-messaging 25.1.2 ou version ultérieure \\

OneSignal est compilé avec `firebase-messaging` 24.x, qui utilise `FirebaseMessaging.getToken()` pour les jetons d'enregistrement FCM hérités.

L'enregistrement FID utilise `FirebaseMessaging.register()`, qui nécessite `firebase-messaging` 25.1.2 ou version ultérieure.

Pour mettre à niveau `firebase-messaging`, ajoutez ceci au fichier Gradle du module de votre application :

```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]'
```

#### Utiliser firebase-messaging 26.x \\

La plage `[25.1.2, 25.99.99]` maintient votre application sur 25.x, qui n'a pas d'exigences supplémentaires. Si votre application ou une autre dépendance introduit `firebase-messaging` 26.x, Gradle résout vers 26.x, et votre application nécessite également :

* `minSdk` 24 ou supérieur
* Kotlin 2.0.0 ou version ultérieure

Vérifiez quelle version votre application résout :

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

### Étape 3 : Ajouter le paramètre de manifeste Firebase \\

Ajoutez ceci dans la balise `<application>` de votre `AndroidManifest.xml` :

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

Sur Expo, définissez plutôt `enableFirebaseInstallationId: true` dans la configuration de `onesignal-expo-plugin` (version `2.8.0` ou ultérieure), puis exécutez `expo prebuild`.

### Étape 4 : Vérifier l'enregistrement FID \\

Compilez et exécutez sur un appareil, puis vérifiez le **Push Token** dans le journal ou dans **Dashboard > Audience > Subscriptions**.

> [!TIP]
>
> Votre Subscription OneSignal doit être **Subscribed** et le jeton push doit être un Firebase Installation ID court comme `cXp9fY-TRFCLSy9kVTqorZ`, et non un jeton FCM hérité plus long contenant deux-points comme `dN8Ya5MTR2OO-0BXdqimCI:APA91bFw...`. Si le statut est négatif, consultez [Dépannage](#troubleshooting).

***

## Désactiver l'enregistrement FID \\

La méthode à utiliser dépend de l'origine du paramètre.

> [tab] Vous l'avez ajouté
>
> Supprimez l'élément `<meta-data>` de votre `AndroidManifest.xml`, puis recompilez.

> [tab] Une dépendance l'a ajouté
>
> Si le paramètre arrive par fusion des manifestes, supprimer votre propre entrée ne sert à rien, car il n'y en a pas. Remplacez plutôt la valeur fusionnée. Une valeur `false` avec `tools:replace` l'emporte lors de la fusion, donc un `true` provenant d'une dépendance ne prend jamais effet :
>
> ```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>
> ```
>
> Recompilez et revérifiez le manifeste fusionné pour confirmer que la valeur est désormais `false`.

> [!WARNING]
>
> Désactiver l'enregistrement FID affecte tous les SDK de votre application, pas seulement OneSignal. Si un autre SDK dépend de l'enregistrement FID, consultez sa documentation avant de désactiver le paramètre.

Les appareils se réenregistrent au prochain lancement de l'application. Les Subscriptions existantes sont conservées et reçoivent une nouvelle valeur de jeton.

***

## Dépannage \\

Recherchez la Subscription dans **Dashboard > Audience > Subscriptions** et vérifiez son statut. Chaque statut ci-dessous a une cause et une solution.

Après avoir corrigé la configuration et publié un nouveau build, la **même Subscription se rétablit lors d'une session ultérieure**. Aucune réinstallation n'est nécessaire et aucune nouvelle Subscription n'est créée.

| Statut | Signification | Solution |
| - | - | - |
| `-32` | L'enregistrement FID est activé, mais votre application n'a pas de `FirebaseApp` par défaut | [Ajouter la configuration Firebase](#32-no-default-firebase-app) |
| `-33` | L'enregistrement FID est activé, mais `FirebaseMessaging.register()` n'est pas disponible | [Mettre à niveau firebase-messaging](#33-register-api-unavailable) |
| `-34` | L'enregistrement FID a échoué, ou les services Google Play ne sont pas à jour | [Mettre à jour les services Google Play](#34-fid-registration-failed) |
| `-6` | Le Sender ID ne correspond pas entre votre application et OneSignal | [Faire correspondre vos projets Firebase](#6-sender-id-mismatch) |

### -32 : Aucune application Firebase par défaut \\

L'enregistrement FID nécessite la `FirebaseApp` par défaut propre à votre application. Le projet Firebase partagé de OneSignal ne peut pas produire d'installation ID.

Causes les plus courantes, par ordre :

1. **`google-services.json` est absent.** Téléchargez-le depuis votre [console Firebase](https://console.firebase.google.com/) sous **Project settings > Your apps**, et ajoutez-le à votre application. Les applications Android natives utilisent le répertoire `app/`. Les autres plateformes utilisent des chemins différents. Consultez [Ajouter votre fichier de configuration Firebase](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md#add-your-firebase-configuration-file).
2. **Le plugin Gradle Google Services n'est pas appliqué.** Le fichier seul n'a aucun effet. Le plugin le convertit en ressources que Firebase lit à l'exécution. Consultez [Ajouter votre fichier de configuration Firebase](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md#add-your-firebase-configuration-file).
3. **Le plugin est appliqué dans le mauvais fichier Gradle.** Le `apply` doit se trouver dans le `build.gradle` du **module de votre application**, pas dans le fichier au niveau du projet.
4. **L'initialisation programmatique s'est exécutée trop tard, ou pas du tout.** Si vous initialisez vous-même l'application par défaut (par exemple, parce que vous conditionnez Firebase au consentement de l'utilisateur), elle doit se terminer avant l'initialisation de OneSignal. Consultez [Configurer Firebase sans google-services.json](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md#set-up-firebase-without-google-services-json).

Si vous n'aviez pas l'intention d'utiliser l'enregistrement FID, [désactivez-le](#disable-fid-registration).

### -33 : API register indisponible \\

L'API `FirebaseMessaging.register()` n'existe pas dans la version de `firebase-messaging` résolue par votre application, ou elle a été supprimée de votre build de release.

1. **Déclarez `firebase-messaging` 25.1.2 ou version ultérieure.** `register()` est apparu dans la version 25.1.0, et OneSignal est compilé avec 24.x, donc votre application doit apporter la bibliothèque plus récente. Utilisez 25.1.2 ou version ultérieure plutôt que 25.1.0 ou 25.1.1. Consultez [Prérequis](#requirements).

2. **Vérifiez la version résolue.** Une autre dépendance épingle peut-être une version plus ancienne :

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

3. **Si cela ne se produit que dans les builds de release,** R8 a supprimé ou renommé la méthode. Vérifiez que les règles ProGuard consommateur de OneSignal sont appliquées et que vous ne les avez pas désactivées.

### -34 : Échec de l'enregistrement FID \\

Ce statut peut être retenté. Le SDK réessaie lors d'une session ultérieure.

1. **Les services Google Play ne sont pas à jour.** L'enregistrement FID nécessite la version `261200000` ou ultérieure. En dessous de cette version, Firebase demande un jeton hérité au lieu d'enregistrer l'installation ID, et ce jeton n'est jamais disponible pour votre application. Le SDK échoue plutôt que de signaler une Subscription qui ne peut pas recevoir de push. Mettez à jour les services Google Play sur l'appareil via le Play Store.
2. **Un échec Firebase transitoire.** Aucune action n'est nécessaire. L'enregistrement se rétablit lors d'un lancement ultérieur de l'application.

### -6 : Sender ID non correspondant \\

Affiché dans le tableau de bord sous la forme `Invalid Google Project Number`. Le projet Firebase de votre application et le compte de service FCM téléversé dans OneSignal ne sont pas le même projet.

Une non-correspondance de projet ne provoque ce statut que lorsque l'enregistrement FID est activé. Sur le chemin des jetons hérités, la même non-correspondance n'échoue pas, et le SDK s'enregistre plutôt via le projet Firebase partagé de OneSignal. C'est pourquoi `-6` peut apparaître juste après l'activation de l'enregistrement FID, même si le push fonctionnait auparavant.

Comparez les deux projets avec [Faire correspondre vos projets Firebase](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md#match-your-firebase-projects). Si les valeurs diffèrent, téléversez le compte de service du bon projet Firebase, ou intégrez le `google-services.json` du projet dont vous avez téléversé le compte de service.

> [!WARNING]
>
> Contrairement aux autres statuts, `-6` marque les Subscriptions existantes comme non valides. Corrigez la configuration et publiez un build mis à jour ; les appareils se réenregistrent et reviennent à **Subscribed** au prochain lancement.

***

## FAQ

### Ai-je besoin de `google-services.json` même si je n'utilise pas FID ? \\

Le push fonctionne sans ce fichier aujourd'hui, mais vous devriez l'ajouter. Ajouter le fichier n'active pas le paramètre de manifeste. Consultez [Que se passe-t-il si je n'ajoute pas google-services.json ?](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md#what-happens-if-i-skip-google-services-json)

### Vais-je perdre mes Subscriptions existantes ? \\

Non. Les appareils se réenregistrent au prochain lancement de l'application et conservent la même Subscription, avec une nouvelle valeur de jeton push. Cela s'applique dans les deux sens, à l'activation comme à la désactivation. L'exception est une non-correspondance de projet Firebase, qui marque les Subscriptions existantes comme non valides jusqu'à ce que vous publiiez un correctif. Consultez [`-6`](#6-sender-id-mismatch).

### Puis-je activer l'enregistrement FID uniquement pour OneSignal ? \\

Non. Le paramètre s'applique à l'ensemble du processus et désactive `getToken()` pour tous les SDK. L'enregistrement par installation ID ne peut utiliser que votre `FirebaseApp` par défaut. L'application partagée de OneSignal ne peut pas produire cet ID.

### Pourquoi le format de mon jeton push a-t-il changé ? \\

Votre application s'enregistre désormais avec un Firebase Installation ID. Les Installation IDs sont courts et sans deux-points, comme `cXp9fY-TRFCLSy9kVTqorZ`. Les jetons FCM hérités sont plus longs et contiennent deux-points, comme `dN8Ya5MTR2OO-0BXdqimCI:APA91bFw...`.

***

## Pages associées

> [card] [Identifiants Firebase Android](https://documentation.onesignal.com/docs/fr/android-firebase-credentials.md)
>
> Téléversez votre clé privée de compte de service FCM et ajoutez `google-services.json` à votre application.

> [card] [Configuration du SDK Android](https://documentation.onesignal.com/docs/fr/android-sdk-setup.md)
>
> Installez et initialisez le SDK Android OneSignal.

> [card] [Subscriptions](https://documentation.onesignal.com/docs/fr/subscriptions.md)
>
> Consultez les statuts de Subscription, y compris `-6` et les statuts FID `-32` à `-34`.

> [card] [Capturer un journal de débogage](https://documentation.onesignal.com/docs/fr/capturing-a-debug-log.md)
>
> Collectez des journaux détaillés du SDK pour voir les erreurs d'enregistrement.


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