FCM — qu'est-ce que c'est, principes de Firebase Cloud Messaging dans le développement

Auteur : IT Sectr Publié le : 2026-03-19 Temps de lecture : 8 min

FCM (Firebase Cloud Messaging) est un service multiplateforme de Google pour la livraison de notifications push et le transfert de données entre un serveur et des applications mobiles. Il prend en charge Android, iOS et les plateformes web via une API unique. Selon la Documentation Firebase, FCM traite plus d'un milliard de messages quotidiennement dans le monde entier.

Points clés

  • FCM est un service multiplateforme de Google pour l'envoi de notifications push et de données
  • Architecture — le client reçoit un jeton d'enregistrement, le serveur envoie des messages via Firebase Connection Server
  • Types de messages — notification (affichage automatique) et data (traitement complet dans l'application)
  • Livraison — FCM utilise une connexion persistante ou des files d'attente prioritaires pour une livraison garantie
  • Intégration — configuration via Firebase SDK, réglage de google-services.json et configuration du serveur

Qu'est-ce que FCM ?

Firebase Cloud Messaging (FCM) est un service cloud de Google qui assure une livraison fiable des notifications push et des messages de données aux appareils mobiles. Anciennement connu sous le nom de Google Cloud Messaging (GCM), FCM est devenu l'outil principal pour les notifications multiplateformes dans l'écosystème Firebase.

FCM sélectionne automatiquement le canal de livraison optimal en fonction de la plateforme : sur Android, il utilise sa propre connexion FCM ; sur iOS, il utilise APNS (via la passerelle FCM). Le développeur n'a pas besoin d'implémenter deux intégrations différentes — FCM gère le routage.

Le service fournit une API REST unifiée et un Admin SDK pour l'envoi de messages. Cela permet d'envoyer des notifications depuis le serveur sans être lié à une plateforme de destinataire spécifique.

Principales capacités de FCM

FCM prend en charge plusieurs modes de livraison : un message unique à un appareil spécifique, une diffusion groupée par sujet et un envoi segmenté par conditions. L'envoi programmé et les tests A/B du contenu des notifications sont également disponibles.

Comment fonctionne Firebase Cloud Messaging ?

L'architecture de FCM repose sur trois composants : l'application cliente, le Firebase Connection Server et le serveur d'applications. Le client s'enregistre auprès de FCM au démarrage et reçoit un jeton d'enregistrement unique — une chaîne qui identifie l'appareil pour l'application donnée.

Le serveur d'applications envoie une requête à l'API REST de FCM, en spécifiant le jeton du destinataire ou le sujet. Le Firebase Connection Server livre le message en utilisant une connexion XMPP persistante ou une requête HTTP. Si l'appareil est hors ligne, le message est mis en file d'attente et livré lorsque la connexion est rétablie.

FCM garantit la livraison à l'aide de files d'attente prioritaires et d'un mécanisme d'accusé de réception. Sur Android, le message est stocké jusqu'à 28 jours dans la file d'attente ; sur iOS, jusqu'à 4 semaines (via APNS). Après la date d'expiration, le message est supprimé sans notification.

Cycle de vie du jeton FCM

Le jeton d'enregistrement peut changer dans plusieurs cas : lors de la restauration des données de l'application, lors de la mise à jour vers une nouvelle version ou lors du vidage du cache. L'application doit implémenter FirebaseMessagingService.onNewToken pour gérer les mises à jour du jeton et se synchroniser avec le serveur.

Types de messages FCM

FCM prend en charge deux types de charge utile : notification et data. Chaque type détermine comment et quand le message est traité sur l'appareil du destinataire.

ParamètreNotificationData
Affichage automatiqueOui, si l'application est en arrière-planNon, uniquement dans l'application
TraitementSystème/NOS — en arrière-plan ; application — au premier planToujours dans l'application (onMessageReceived)
Taille maximale4 Ko4 Ko
Clés personnaliséesLimité aux champs prédéfinisToutes paires clé-valeur
Nécessite CollapseKeyOptionnelOptionnel pour le regroupement

En pratique, il est recommandé d'utiliser les messages data lorsque l'application a besoin d'un traitement complet de la notification dans onMessageReceived. Les messages notification sont adaptés aux scénarios simples où l'affichage système est suffisant.

FCM et APNS : comparaison des approches

FCM et APNS sont les deux principaux services de livraison push. FCM fonctionne comme une passerelle multiplateforme, tandis qu'APNS est uniquement destiné à l'écosystème Apple. Leurs principales différences résident dans l'architecture, les exigences de certificats et les mécanismes de routage.

  • Multiplateforme — FCM prend en charge Android, iOS, Web ; APNS uniquement iOS, macOS, watchOS, tvOS
  • Authentification — FCM utilise Server Key ou OAuth 2.0 ; APNS utilise un certificat ou Token-based (clé p8)
  • Priorité du message — FCM a normal/high ; APNS a immediate/power-efficient consideration
  • Sujets — FCM prend en charge l'abonnement aux sujets nativement ; APNS nécessite une logique serveur

Le choix entre FCM et APNS direct dépend de l'architecture du projet. Pour les applications multiplateformes, FCM est le choix optimal. Pour les projets iOS uniquement, le travail direct avec APNS via l'API HTTP/2 est acceptable.

Quand choisir FCM plutôt qu'APNS direct

FCM est justifié lorsque le projet utilise Android et iOS simultanément, ainsi que lorsque des analyses Firebase, des tests A/B de notifications ou des sujets sans logique serveur sont nécessaires. L'APNS direct est préférable pour les applications iOS uniquement avec des dépendances minimales et des exigences strictes de latence de livraison.

Intégration de FCM dans Android

Pour connecter FCM à une application Android, vous devez ajouter le SDK Firebase et configurer google-services.json à la racine du projet. Après l'enregistrement du jeton, l'application est prête à recevoir des messages via FirebaseMessagingService.

kotlin
// build.gradle (Module)
dependencies {
    implementation("com.google.firebase:firebase-messaging:24.1.0")
}

// AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

class MyFirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(message: RemoteMessage) {
        message.notification?.let {
            showNotification(it.title, it.body)
        }
    }
}

Après la configuration, l'application reçoit automatiquement un jeton FCM au premier lancement. Le jeton doit être envoyé au serveur d'application pour l'envoi ultérieur de notifications à cet appareil.

Configuration d'un canal pour les notifications FCM

Sur Android 8+, avant d'envoyer une notification FCM avec affichage automatique, vous devez créer un NotificationChannel. Les messages notification FCM utilisent l'ID de canal par défaut, mais il est recommandé de créer un canal personnalisé via FirebaseMessagingService lors de la réception du premier message. Les messages data ne nécessitent pas de canal — l'application décide elle-même comment et quand afficher la notification.

Intégration de FCM dans iOS

Sur iOS, FCM agit comme un intermédiaire entre le serveur d'application et APNS. Firebase reçoit le message du serveur, l'encapsule au format APNS et l'envoie via la passerelle Apple. Le développeur doit configurer une clé ou un certificat APNS dans la console Firebase.

swift
import FirebaseMessaging
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current().delegate = self

        Messaging.messaging().delegate = self
        return true
    }
}

extension AppDelegate: MessagingDelegate {
    func messaging(
        _ messaging: Messaging,
        didReceiveRegistrationToken fcmToken: String?
    ) {
        UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
    }
}

Sur iOS, l'enregistrement APNS se produit de manière asynchrone. Le SDK FCM obtient automatiquement le jeton APNS et le transmet au serveur Firebase. didReceiveRegistrationToken se déclenche lors de la réception d'un nouveau jeton FCM, qui combine le jeton APNS avec l'identifiant du projet.

Vérification du statut de livraison

FCM fournit une console Firebase pour surveiller la livraison : le nombre de notifications envoyées, reçues et affichées. Un callback de statut est également disponible via Firebase Cloud Functions pour suivre les erreurs de livraison côté serveur. Métriques clés : impressions et ouvertures des notifications.

Meilleures pratiques FCM

Lorsque vous travaillez avec FCM, il est important de choisir le type de message approprié pour chaque scénario. Pour les notifications simples avec affichage automatique, utilisez les messages notification. Pour les cas où l'application doit traiter les données avant l'affichage, utilisez les messages data. Un type mixte (notification + data) est recommandé uniquement si les données sont nécessaires pour les analyses et non pour modifier le contenu de la notification.

Gérez les jetons de manière centralisée. Stockez les jetons actuels sur le serveur dans une table liée à l'utilisateur et à la plateforme. Implémentez un mécanisme de nettoyage des jetons obsolètes : lors d'une erreur NotRegistered ou InvalidRegistration, supprimez le jeton de la base de données. Les jetons changent rarement, mais leur nettoyage est un élément obligatoire du support FCM.

Utilisez des clés de regroupement (collapseKey) pour regrouper les messages. Si vous envoyez plusieurs notifications du même type (par exemple, « mise à jour du taux de change »), définissez le même collapseKey. FCM livrera uniquement le dernier message du groupe, réduisant ainsi la charge sur l'appareil et évitant de submerger l'utilisateur de notifications.

Surveillez la livraison via la Firebase Console et les Cloud Functions. Les analyses FCM affichent le nombre de notifications envoyées, reçues et affichées. Si le taux d'affichage est inférieur à 70 %, vérifiez les paramètres des canaux sur Android et les autorisations sur iOS. Une faible livraison est souvent liée à des canaux désactivés ou à des interdictions de notifications. Cinquièmement : utilisez les tests A/B Firebase pour optimiser le texte des notifications et l'heure d'envoi — cela augmente le taux d'ouverture de 15 à 25 % selon les données Firebase.

Foire aux questions

Quelle est la différence entre FCM et GCM ?

FCM est la mise à jour évolutive de GCM (Google Cloud Messaging). FCM offre une configuration simplifiée via la Firebase Console, des analyses intégrées, des sujets et la prise en charge de Web Push. GCM a été officiellement arrêté en avril 2019, tous les projets doivent être migrés vers FCM.

Combien de messages peut-on envoyer gratuitement via FCM ?

Firebase Cloud Messaging est un service gratuit sans limite sur le nombre de messages. Le paiement est facturé uniquement pour l'utilisation d'autres services Firebase tels que Cloud Functions ou Firestore. FCM ne nécessite pas d'abonnement Spark ou Blaze pour l'envoi de base des notifications.

Pourquoi le jeton FCM peut-il changer ?

Le jeton FCM change lors de : la restauration de l'application à partir d'une sauvegarde, l'effacement des données de l'application, la réinstallation, la mise à jour vers une nouvelle version avec un Sender ID modifié. Gérez toujours onNewToken dans FirebaseMessagingService pour envoyer le nouveau jeton au serveur.

FCM fonctionne-t-il en Chine ?

FCM de Google est bloqué en Chine. Pour la livraison de notifications en Chine, des services alternatifs sont utilisés : Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Pour la livraison multiplateforme, des services multi-fournisseurs comme Getui sont utilisés.

Comment vérifier que FCM est correctement configuré ?

Utilisez la console Firebase intégrée : sélectionnez « Cloud Messaging » — « Send Test Message ». Saisissez un jeton de test et envoyez un message notification. La notification devrait apparaître sur l'appareil. Vous pouvez également surveiller les logs FirebaseMessagingService.onMessageReceived.

Résumé

  • FCM est un service cloud multiplateforme de Google pour la livraison de notifications push et de données
  • Jeton est un identifiant unique d'appareil utilisé pour l'envoi ciblé de messages
  • Notification est un type de message avec affichage automatique par le système en mode arrière-plan
  • Data est un type de message avec charge utile complète traitée uniquement dans l'application
  • Sujets est un mécanisme de diffusion groupée basé sur l'abonnement à des sujets sans stockage de jetons sur le serveur
  • Passerelle APNS — pour iOS, FCM agit comme intermédiaire, transférant les messages via APNS
  • Gratuit — FCM ne facture pas le nombre de messages envoyés

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi