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.
Faut-il l’activer ? \
L’enregistrement FID est facultatif mais recommandé. Google a rendu obsolètes les jetons d’enregistrement FCM 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
261200000ou 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. - Autres SDK push. Le paramètre s’applique à toute votre application et désactive
getToken()etdeleteToken()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.tokenetIPushSubscriptionObserverrenvoient 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 appelleonRegistered()au lieu deonNewToken(). Déplacez votre gestion des jetons versonRegistered(). Si votre application appelledeleteToken()(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, et Conflit avec le SDK Firebase Messaging pour l’utiliser avec OneSignal. - Exigences de build. Votre application doit déclarer
firebase-messaging25.1.2 ou version ultérieure et utiliserminSdk23 ou supérieur. Avecfirebase-messaging26.x, votre application nécessiteminSdk24 ou supérieur et Kotlin 2.0.0 ou version ultérieure. Consultez Prérequis. - 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 propreAndroidManifest.xml. Une dépendance peut ajouter ce paramètre sans qu’il apparaisse dans votre code source.
1
Générer le manifeste fusionné
2
Rechercher dans le résultat fusionné
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.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 ne les affichera pas sur un appareil sain. Utilisez le manifeste fusionné pour confirmer le paramètre.
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, exigezfirebase-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.- SDK Android OneSignal
5.11.0ou version ultérieure, ou une version de SDK wrapper qui l’inclut. Consultez Versions minimales du SDK OneSignal com.google.firebase:firebase-messaging25.1.2ou 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-messaging25.0.0 a relevé le minimum de 21 à 23). Avecfirebase-messaging26.x, API 24+ et Kotlin 2.0.0 ou version ultérieure. Consultez Utiliser firebase-messaging 26.x - Services Google Play version
261200000ou ultérieure sur l’appareil - Une
FirebaseApppar défaut pour votre propre projet Firebase. Consultez Étape 1 : Ajouter google-services.json à votre application - Des projets Firebase correspondants. Le projet de votre
google-services.jsondoit être le même que celui du compte de service FCM téléversé dans OneSignal. Consultez Faire correspondre vos projets Firebase
Versions minimales du SDK OneSignal \
La prise en charge de l’enregistrement FID est arrivée avec le SDK Android OneSignal5.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.
É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échargezgoogle-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. 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 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é avecfirebase-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 :
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 :
minSdk24 ou supérieur- Kotlin 2.0.0 ou version ultérieure
Étape 3 : Ajouter le paramètre de manifeste Firebase \
Ajoutez ceci dans la balise<application> de votre AndroidManifest.xml :
AndroidManifest.xml
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.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.Désactiver l’enregistrement FID \
La méthode à utiliser dépend de l’origine du paramètre.- Vous l'avez ajouté
- Une dépendance l'a ajouté
Supprimez l’élément
<meta-data> de votre AndroidManifest.xml, puis recompilez.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.-32 : Aucune application Firebase par défaut \
L’enregistrement FID nécessite laFirebaseApp 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 :
google-services.jsonest absent. Téléchargez-le depuis votre console Firebase sous Project settings > Your apps, et ajoutez-le à votre application. Les applications Android natives utilisent le répertoireapp/. Les autres plateformes utilisent des chemins différents. Consultez Ajouter votre fichier de configuration Firebase.- 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.
- Le plugin est appliqué dans le mauvais fichier Gradle. Le
applydoit se trouver dans lebuild.gradledu module de votre application, pas dans le fichier au niveau du projet. - 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.
-33 : API register indisponible \
L’APIFirebaseMessaging.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.
-
Déclarez
firebase-messaging25.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. -
Vérifiez la version résolue. Une autre dépendance épingle peut-être une version plus ancienne :
- 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.- Les services Google Play ne sont pas à jour. L’enregistrement FID nécessite la version
261200000ou 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. - 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 formeInvalid 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. 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.
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 ?
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.
Puis-je activer l’enregistrement FID uniquement pour OneSignal ? \
Non. Le paramètre s’applique à l’ensemble du processus et désactivegetToken() 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, commecXp9fY-TRFCLSy9kVTqorZ. Les jetons FCM hérités sont plus longs et contiennent deux-points, comme dN8Ya5MTR2OO-0BXdqimCI:APA91bFw....
Pages associées
Identifiants Firebase Android
Téléversez votre clé privée de compte de service FCM et ajoutez
google-services.json à votre application.Configuration du SDK Android
Installez et initialisez le SDK Android OneSignal.
Subscriptions
Consultez les statuts de Subscription, y compris
-6 et les statuts FID -32 à -34.Capturer un journal de débogage
Collectez des journaux détaillés du SDK pour voir les erreurs d’enregistrement.