获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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 votre espace de travail de projet Xcode ( ios/Runner.xcworkspace ).
  2. Activez les notifications push .
  3. Activez la récupération en arrière -plan et les modes d'exécution en arrière-plan des notifications à distance .

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

Avant d'utiliser FCM, chargez votre certificat APNs sur Firebase. Si vous n'avez pas encore de certificat APNs, créez-en un dans l' Apple Developer Member Center .

  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 Cloud Messaging .
  2. Sélectionnez le bouton Télécharger le certificat pour votre certificat de développement, votre certificat de production ou les deux. Au moins un est requis.
  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 swizzling

Pour utiliser le plug-in FCM Flutter sur les appareils Apple, vous ne devez pas désactiver le swizzling de méthode. Swizzling est nécessaire, et sans lui, 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() . 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 d'autres moyens, par exemple via le bouton de 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 à partir du Play Store.

la toile

Configurer les informations d'identification Web avec FCM

L'interface Web FCM utilise des informations d'identification Web appelées "Identification volontaire du serveur d'applications" ou des clés "VAPID" pour autoriser l'envoi de demandes aux services push Web 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 et affiche 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 de niveau propriétaire au projet Firebase. Importez votre clé publique et privée existante sous une forme encodée sécurisée d'URL 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 , indiquez vos clés publique et privée 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 la manière de les générer, voir Clés du serveur d'applications .

Installer le plug-in 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'enregistrement

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 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 des autorisations de notification. Sinon, il renvoie un jeton ou rejette le futur en raison d'une erreur.

final fcmToken = await FirebaseMessaging.instance.getToken();

Sur les plateformes web, passez 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 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 génération.

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'auto-init FCM lors 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 cliente configurée, vous êtes prêt à commencer à envoyer des messages en aval avec l'éditeur de notifications . Voir Envoyer un message de test à une application en arrière-plan .

Pour ajouter d'autres comportements plus avancés à votre application, vous aurez besoin d'une implémentation de serveur .

Ensuite, dans votre client d'application :