Configurer une application cliente Firebase Cloud Messaging sur Flutter

Pour configurer un client FCM sur Flutter, procédez comme suit :

Configuration et exigences spécifiques à la plate-forme

Certaines des étapes requises dépendent de la plate-forme que vous ciblez.

iOS+

Activer les fonctionnalités de l'application dans Xcode

Avant que votre application puisse commencer à recevoir des messages, vous devez activer les notifications push et les modes en arrière-plan dans votre projet Xcode.

  1. Ouvrez l'espace de travail de votre projet Xcode (ios/Runner.xcworkspace).
  2. Activez les notifications push.
  3. Activez les modes d'exécution en arrière-plan Background fetch (Récupération en arrière-plan) et Remote notifications (Notifications à distance).

Importer votre clé d'authentification APNs

Avant d'utiliser FCM, importez votre certificat APNs dans Firebase. Si vous ne possédez pas encore de certificat APNs, créez-en un dans le Apple Developer Member Center.

  1. Dans la console Firebase, sélectionnez l'icône en forme de roue dentée, puis Paramètres du projet, puis l'onglet Cloud Messaging.
  2. Sélectionnez le bouton Importer un certificat pour votre certificat de développement, votre certificat de production ou les deux. Veuillez inclure au moins l'un des deux.
  3. Pour chaque certificat, sélectionnez le fichier .p12 et fournissez le mot de passe, le cas échéant. Assurez-vous que l'ID de bundle de ce certificat correspond à celui de votre application. Sélectionnez Enregistrer.

Méthode swizzling

Pour utiliser le plug-in Flutter FCM sur les appareils Apple, vous ne devez pas désactiver le swishing de méthode. Le forçage de type est obligatoire. Sans lui, les principales fonctionnalités Firebase telles que la gestion des jetons FCM ne fonctionnent pas correctement.

Android

Services Google Play

Les clients FCM nécessitent des appareils exécutant Android 4.4 ou version ultérieure sur lesquels les services Google Play sont également installés, ou un émulateur exécutant Android 4.4 avec les API Google. Notez que vous n'êtes pas limité au déploiement de vos applications Android via le Google Play Store.

Les applications qui s'appuient sur le SDK Play Services doivent toujours rechercher un APK des services Google Play compatible sur l'appareil avant d'accéder aux fonctionnalités des services Google Play. Nous vous recommandons de le faire à deux endroits: dans la méthode onCreate() de l'activité principale et dans sa méthode onResume(). La vérification dans onCreate() garantit que l'application ne peut pas être utilisée sans une vérification réussie. La vérification dans onResume() garantit que si l'utilisateur revient à l'application en cours d'exécution par un autre moyen, tel que le bouton Retour, la vérification est toujours effectuée.

Si l'appareil ne dispose pas d'une version compatible des services Google Play, votre application peut appeler GoogleApiAvailability.makeGooglePlayServicesAvailable() pour permettre aux utilisateurs de télécharger les services Google Play depuis le Play Store.

Web

Configurer des identifiants Web avec FCM

L'interface Web FCM utilise des identifiants Web appelés "Voluntary Application Server Identification" (VAPID) ou clés "VAPID" pour autoriser l'envoi de requêtes aux services Web push compatibles. Pour abonner votre application aux notifications push, vous devez associer une paire de clés à votre projet Firebase. Vous pouvez générer une nouvelle paire de clés ou importer votre paire de clés existante via la console Firebase.

Générer une paire de clés
  1. Ouvrez l'onglet Cloud Messaging du volet Paramètres de la console Firebase, puis faites défiler la page jusqu'à la section Configuration Web.

  2. Dans l'onglet Certificats Web push, cliquez sur Générer une paire de clés. La console affiche une notification indiquant que la paire de clés a été générée, ainsi que la chaîne de clé publique et la date d'ajout.

Importer une paire de clés existante

Si vous utilisez déjà une paire de clés avec votre application Web, vous pouvez l'importer dans FCM afin de pouvoir accéder à vos instances d'application Web existantes via les API FCM. Pour importer des clés, vous devez disposer d'un accès au niveau du propriétaire du projet Firebase. Importez vos clés publique et privée existantes au format base64 URL-safe:

  1. Ouvrez l'onglet Cloud Messaging du volet Paramètres de la console Firebase, puis faites défiler la page jusqu'à la section Configuration Web.

  2. Dans l'onglet Certificats Web Push, recherchez et sélectionnez le texte du lien "importer une paire de clés existante".

  3. Dans la boîte de dialogue Import a key pair (Importer une paire de clés), indiquez vos clés publique et privée dans les champs correspondants, puis cliquez sur Import (Importer). La console affiche la chaîne de clé publique et la date d'ajout.

Pour en savoir plus sur le format des clés et sur la façon de les générer, consultez la section Clés de serveur d'application.

Installer le plug-in FCM

  1. Installez et initialisez les plug-ins Firebase pour Flutter, si ce n'est pas déjà fait.

  2. À partir de la racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in:

    flutter pub add firebase_messaging
    
  3. Une fois cette étape terminée, reconstruisez votre application Flutter:

    flutter run
    

Accéder au jeton d'enregistrement

Pour envoyer un message à un appareil spécifique, vous devez connaître le jeton d'enregistrement de cet appareil. Comme vous devrez saisir le jeton dans un champ de la console Notifications pour terminer ce tutoriel, assurez-vous de le copier ou de le stocker de manière sécurisée après l'avoir récupéré.

Pour récupérer le jeton d'enregistrement actuel d'une instance d'application, appelez getToken(). Si l'autorisation de notification n'a pas été accordée, cette méthode demandera à l'utilisateur les autorisations de notification. Sinon, elle renvoie un jeton ou rejette l'avenir en raison d'une erreur.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

Sur les plates-formes Web, transmettez votre clé publique VAPID à getToken():

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Pour être averti chaque fois que le jeton est mis à jour, abonnez-vous au flux onTokenRefresh:

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Empêcher l'initialisation automatique

Lorsqu'un jeton d'enregistrement FCM est généré, la bibliothèque importe l'identifiant et les données de configuration dans Firebase. Si vous préférez empêcher la génération automatique de jetons, désactivez l'initialisation automatique au moment de la compilation.

iOS

Sur iOS, ajoutez une valeur de métadonnées à votre Info.plist:

FirebaseMessagingAutoInitEnabled = NO

Android

Sur Android, désactivez la collecte Analytics et l'initialisation automatique de FCM (vous devez désactiver les deux) en ajoutant ces valeurs de métadonnées à votre AndroidManifest.xml:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Réactiver l'initialisation automatique de FCM au moment de l'exécution

Pour activer l'initialisation automatique pour une instance d'application spécifique, appelez setAutoInitEnabled():

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Une fois définie, cette valeur persiste lors des redémarrages de l'application.

Étapes suivantes

Une fois l'application cliente configurée, vous pouvez commencer à envoyer des messages en aval avec l'outil de création de notifications. Consultez Envoyer un message test à une application en arrière-plan.

Pour ajouter un autre comportement plus avancé à votre application, vous avez besoin d'une implémentation sur serveur.

Ensuite, dans le client de votre application: