Je te remercie @Behache pour le lien de la vidéo qui m’a apporté les 2-3 dernières réponses qui m’ont permis de réussir ma migration des anciennes API FCM vers HTTP V1.
Je vais tenter de vous expliquer cela ici.
Je trouve que la doc google n’est pas suffisamment claire et qu’il manque des informations clefs pour réussir cette migration.
Comme la doc l’indique à cette adresse Migrer des anciennes API FCM vers HTTP v1 le nouveau format d’un envoi d’une notification push est le suivant :
-
POST https://fcm.googleapis.com/v1/projects/ myProjectId
/messages:send
-
Authorization: Bearer accessToken
-
{
« message »:{
« token »: « token of the receiver device
»,
« notification »:{
« body »: « This is an FCM notification message! »,
« title » : « FCM Message »
},
« data »:{
« data1 »: « data1 »,
« data2 »: « data2 »
}}}
Je vais vous expliquer comment trouver myProjectId
et comment générer dans notre code Flutter l’ accessToken
:
Après avoir ajouter Firebase à notre application, on doit créer un fichier JSON pour nos demandes d’accessToken
.
On se rend sur Google cloud console puis :
-
On sélectionne notre projet
-
En haut à gauche on clique sur paramètres du projet
-
Sur la page Paramètres généraux on prend notre de notre ID du projet qui correspond à myProjectId
…première réponse donnée 
-
Tout en haut on clique sur Cloud messaging
-
On vérifie que API Firebase Cloud Messaging (V1) soit bien activée
-
Normalement un compte de service devrait s’être automatiquement crée auparavant en ajoutant Firebase à notre projet
-
On clique sur gérer les Comptes de services
-
On clique sur le compte de service existant
-
On vérifie que l’état du compte de service est bien activé, sinon on l’active
-
Tout en haut on clique sur Clés
-
Ajouter une clef
-
Créer une clef
-
Au format JSON
-
On télécharge le fichier JSON et on le met dans un dossier accessible par notre application (Attention il ne sera pas possible de télécharger ce fichier une seconde fois ! )
-
A partir de la on va être capable de générer un accessToken
dans notre code avec la fonction suivante :
pubspec.yaml
dependecies:
googleapis_auth: ^1.4.1
import ‹ package:flutter/services.dart ›;
import ‹ package:googleapis_auth/auth_io.dart ›;
import ‹ dart:convert ›;
Future generateAccessToken() async {
final serviceAccountPath = 'path to your JSON file';
final content = await rootBundle.loadString(serviceAccountPath);
final credentials = ServiceAccountCredentials.fromJson(jsonDecode(content));
final accessScopes = ["https://www.googleapis.com/auth/firebase.messaging"];
final client = await clientViaServiceAccount(credentials, accessScopes);
final accessToken = client.credentials.accessToken.data;
return accessToken;
}
Et c’est donc ce fameux accessToken
que l’on va utiliser pour pour nos envois de notifications push avec la nouvelle version FCM HTTP V1.
Il faut penser à renouveler cet accessToken
avant chaque utilisation car sa validité dans le temps est faible.
Personnellement j’utilise Flows dans Directus pour envoyer mes notifications push et cela fonctionne parfaitement.
J’espère que mon explication est claire, si ça n’est pas le cas je suis dispo pour plus d’infos, avec plaisir.
En attendant je vous souhaite de bonnes fêtes de fin d’année à tous !
Fabio