Configurer une application client Firebase Cloud Messaging sur Flutter

Suivez ces étapes pour configurer un client FCM sur Flutter.

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 d'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 Récupération en arrière-plan et Notifications à distance .

Téléchargez votre clé d'authentification APNs

Avant d'utiliser FCM, téléchargez votre certificat APNs sur Firebase. Si vous ne disposez pas déjà d'un certificat APNs, créez-en un dans le Centre des membres des développeurs Apple .

  1. Dans votre projet dans la console Firebase, sélectionnez l'icône d'engrenage, sélectionnez Paramètres du projet , puis sélectionnez l'onglet Messagerie cloud .
  2. Sélectionnez le bouton Télécharger le certificat pour votre certificat de développement, votre certificat de production ou les deux. Il en faut au moins un.
  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 à l'ID de bundle de votre application. Sélectionnez Enregistrer .

Méthode tourbillonnante

Pour utiliser le plugin FCM Flutter sur les appareils Apple, vous ne devez pas désactiver le swizzling de méthode. Swizzling est requis, et sans cela, les fonctionnalités clés de 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 Google Play Store.

Les applications qui s'appuient sur le SDK des services Play doivent toujours rechercher sur l'appareil un APK de services Google Play compatible avant d'accéder aux fonctionnalités des services Google Play. Il est recommandé de le faire à deux endroits : dans la méthode onCreate() de l'activité principale et dans sa méthode onResume() . L'enregistrement onCreate() garantit que l'application ne peut pas être utilisée sans une vérification réussie. La vérification onResume() garantit que si l'utilisateur revient à l'application en cours d'exécution par d'autres moyens, par exemple via le bouton Précédent, 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.

la toile

Configurer les informations d'identification Web avec FCM

L'interface Web FCM utilise des informations d'identification Web appelées clés « Voluntary Application Server Identification » ou « VAPID » pour autoriser l'envoi de demandes aux services Web Push pris en charge. Pour abonner votre application aux notifications push, vous devez associer une paire de clés à votre projet Firebase. Vous pouvez soit générer une nouvelle paire de clés, soit importer votre paire de clés existante via la console Firebase.

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

  2. Dans l'onglet Certificats Web Push , cliquez sur Générer une paire de clés . La console affiche un avis 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 disposez déjà d'une paire de clés que vous utilisez 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 au projet Firebase. Importez votre clé publique et privée existante sous une forme codée URL sécurisée en base64 :

  1. Ouvrez l'onglet Cloud Messaging du volet Paramètres de la console Firebase et faites défiler jusqu'à la section de 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 Importer une paire de clés , fournissez vos clés publiques et privées dans les champs correspondants et cliquez sur Importer . La console affiche la chaîne de clé publique et la date d'ajout.

Pour plus d'informations sur le format des clés et comment les générer, voir Clés du serveur d'applications .

Installez le plugin FCM

  1. Installez et initialisez les plugins Firebase pour Flutter si vous ne l'avez pas déjà fait.

  2. Depuis la racine de votre projet Flutter, exécutez la commande suivante pour installer le plugin :

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

    flutter run
    

Accéder au jeton d'inscription

Pour envoyer un message à un appareil spécifique, vous devez connaître le jeton d'enregistrement de cet appareil. Étant donné que vous devrez saisir le jeton dans un champ de la console de notifications pour terminer ce didacticiel, assurez-vous de copier le jeton ou de le stocker en toute sécurité après l'avoir récupéré.

Pour récupérer le jeton d'enregistrement actuel pour 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, il renvoie un jeton ou rejette le futur 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 plateformes web, transmettez votre clé publique VAPID à getToken() :

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

Pour être averti chaque fois que le token 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 télécharge l'identifiant et les données de configuration sur Firebase. Si vous préférez empêcher la génération automatique de jetons, désactivez l'initialisation automatique au moment de la construction.

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 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 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);

Cette valeur persiste lors des redémarrages de l'application une fois définie.

Prochaines étapes

Une fois l'application client configurée, vous êtes prêt à commencer à envoyer des messages en aval avec le compositeur de notifications . Voir Envoyer un message test à une application en arrière-plan .

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

Ensuite, dans votre client d'application :