Suivez ces étapes pour configurer un client FCM sur Flutter.
Configuration et exigences spécifiques à la plate-forme
Certaines étapes obligatoires 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.
- Ouvrez l'espace de travail de votre projet Xcode (
ios/Runner.xcworkspace
). - Activez les notifications push.
- Activez les modes d'exécution en arrière-plan Background fetch et Remote notifications.
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 l'Apple Developer Member Center.
- Dans votre projet de la console Firebase, sélectionnez l'icône en forme de roue dentée, puis Paramètres du projet, puis l'onglet Cloud Messaging.
- Cliquez sur 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.
- Pour chaque certificat, sélectionnez le fichier .p12 et indiquez le mot de passe, le cas échéant. Assurez-vous que l'ID de bundle de ce certificat correspond à celui de votre application, puis 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. Le swizzling est obligatoire. Sans lui, les principales fonctionnalité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 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 des services Play doivent toujours vérifier si l'appareil dispose d'un APK des 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 onCreate()
garantit que l'application ne peut pas être utilisée sans 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, par exemple via 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 les identifiants Web avec FCM
L'interface Web FCM utilise des identifiants Web appelés clés "Voluntary Application Server Identification " (VAPID) pour autoriser les requêtes d'envoi 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 paire de clés ou importer votre paire de clés existante dans la console Firebase.
Générer une paire de clés
Ouvrez l'onglet Cloud Messaging du volet Paramètres de la console Firebase, puis faites défiler la page jusqu'à la section Configuration Web.
Dans l'onglet Certificats Web push, cliquez sur Générer une paire de clés. La console affiche un message 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 possédez déjà une paire de clés que vous utilisez avec votre application Web, vous pouvez l'importer dans FCM pour 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 votre clé privée existantes au format base64 URL-safe :
Ouvrez l'onglet Cloud Messaging du volet Paramètres de la console Firebase, puis faites défiler la page jusqu'à la section Configuration Web.
Dans l'onglet Certificats Web Push, recherchez et sélectionnez le texte du lien "importer une paire de clés existante".
Dans la boîte de dialogue Importer une paire de clés, indiquez vos clés publique et privée dans les champs correspondants, puis cliquez sur 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 Clés du serveur d'application.
Installer le plug-in FCM
Installez et initialisez les plug-ins Firebase pour Flutter, si ce n'est pas déjà fait.
À la racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in :
flutter pub add firebase_messaging
Une fois cette étape effectuée, recréez votre application Flutter :
flutter run
Accéder au jeton d'enregistrement
Pour envoyer un message à un appareil spécifique, vous devez connaître son jeton d'enregistrement. Étant donné que 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 l'autorisation de notification. Sinon, il renvoie un jeton ou refuse la future 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 recevoir une notification 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 le composeur de notifications. Consultez 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 le client de votre application :