Firebase Cloud Messaging : qu'est-ce que c'est, principe de fonctionnement et notifications push

Auteur : IT Sectr Publié le : 2026-04-29 Temps de lecture : 9 min

Firebase Cloud Messaging (FCM) est un service multiplateforme de livraison de notifications push et de messages de Google, conçu pour les applications mobiles et web. FCM assure un transfert de données fiable entre le serveur et les appareils clients sans nécessité de maintenir une connexion réseau permanente. Selon Firebase Documentation, 2026, plus de 300 milliards de messages transitent chaque jour dans le monde via l'infrastructure FCM. Le service prend en charge à la fois les notifications avec affichage automatique et les messages data pour le transfert de données en arrière-plan.

Points clés

  • FCM — un service gratuit de notifications push de Google prenant en charge Android, iOS et Web via une API unifiée et Firebase Console.
  • Types de messages — les messages notification sont affichés automatiquement par le système, les messages data permettent d'envoyer du JSON arbitraire et de le traiter dans l'application.
  • Jetons d'appareil — chaque application reçoit un Registration Token unique que le serveur utilise pour l'envoi ciblé de notifications push.
  • Priorités de livraison — les priorités normal et high déterminent le comportement du système en économie d'énergie : les messages high réveillent l'appareil du mode Doze.
  • Sujets et groupes — FCM prend en charge les abonnements aux sujets pour les envois massifs et les Device Groups pour l'envoi vers plusieurs appareils d'un même utilisateur.

Qu'est-ce que Firebase Cloud Messaging

Firebase Cloud Messaging est un service cloud de Google qui assure la livraison de notifications push et de messages data entre le serveur d'application et les appareils clients. Le service a remplacé l'ancien Google Cloud Messaging (GCM) et est devenu la solution standard pour la livraison push dans l'écosystème Firebase. FCM prend en charge Android, iOS, Web et Unity, offrant une interface d'envoi unifiée indépendamment de la plateforme cible.

Capacités clés de FCM

Le service propose plusieurs mécanismes de livraison de messages, chacun résolvant une tâche spécifique. Les messages notification sont affichés automatiquement par le système à la réception — le développeur n'a pas besoin d'écrire de code pour afficher la notification. Les messages data transmettent une charge utile arbitraire sous forme de paires clé-valeur et sont traités dans l'application. Les messages combinés contiennent à la fois des parties visibles et cachées pour une flexibilité maximale.

Avantages par rapport à une solution personnalisée

Implémenter son propre serveur push nécessite de maintenir une connexion TCP constante avec chaque appareil, ce qui est inefficace et peu sécurisé. FCM utilise l'infrastructure unifiée de Google qui maintient des connexions avec des milliards d'appareils simultanément. Le service gère automatiquement les tentatives de réenvoi, les files d'attente de messages et l'équilibrage de charge, libérant le développeur de la nécessité de résoudre ces tâches lui-même.

Comment fonctionne Firebase Cloud Messaging

L'architecture FCM se compose de trois composants clés : le serveur fournisseur (votre backend), le serveur Firebase Cloud Messaging et l'application cliente sur l'appareil. Lorsque le serveur envoie un message, il atteint d'abord l'infrastructure FCM, qui le route vers l'appareil cible. Si l'appareil est hors ligne, FCM stocke le message dans une file d'attente et le livre lors du rétablissement de la connexion.

Enregistrement de l'appareil et obtention du jeton

Au premier lancement, l'application appelle le SDK Firebase, qui enregistre l'appareil auprès du service FCM et reçoit un Registration Token unique. Ce jeton est une chaîne d'environ 150 caractères qui identifie une instance d'application spécifique sur un appareil spécifique. Le jeton peut changer lors de la réinstallation de l'application, de l'effacement des données ou de la restauration à partir d'une sauvegarde — le développeur doit gérer la mise à jour du jeton via le délégué onNewToken.

Cycle de vie du message

Lorsque le serveur envoie une requête via l'API FCM, le message passe par plusieurs étapes. Réception et validation — FCM vérifie la validité de la requête et l'existence de l'appareil cible. File d'attente — si l'appareil n'est pas disponible, le message entre dans une file de stockage. Routage — FCM détermine le canal de livraison optimal (WiFi ou données mobiles). Livraison — le système transmet le message à l'application cible. Après une livraison réussie, FCM retourne un identifiant de message au serveur.

Types de messages dans FCM

Firebase Cloud Messaging prend en charge trois types de messages, chacun ayant ses particularités de traitement côté client. Les messages notification sont traités par le service système Google Play Services sur Android et APNs sur iOS, et sont affichés automatiquement sous forme de bannières push. Les messages data sont livrés directement à l'application et traités via le callback onMessageReceived sur Android et application(_:didReceiveRemoteNotification:) sur iOS.

Messages notification

Un message notification contient des champs prédéfinis : titre, corps, URL d'image et son de notification. Le système crée et affiche automatiquement la notification dans la barre système, même si l'application est en arrière-plan ou terminée. L'utilisateur voit une bannière standard avec un titre et du texte, et en tapant, l'application s'ouvre avec les données transmises dans la charge utile. Si l'application est active, le message notification peut être intercepté et traité dans le code.

Messages data

Un message data est un ensemble personnalisé de paires clé-valeur sans champs prédéfinis. La charge utile n'est pas traitée automatiquement par le système — l'application reçoit les données brutes et peut les interpréter arbitrairement. Les messages data sont utilisés pour la synchronisation de données en arrière-plan, la mise à jour du cache local, le déclenchement de synchronisation ou l'envoi de commandes sans afficher de notification. Sur Android, le message data est toujours livré, même si l'application est terminée ou en arrière-plan.

Messages combinés

FCM permet d'envoyer un message contenant à la fois une partie notification (pour l'affichage) et une partie data (pour le traitement). La charge utile combinée inclut à la fois les champs prédéfinis de notification et les clés data arbitraires. Le système affiche la notification de la partie notification, tandis que la partie data est transmise dans les extras d'intent de l'application lors de l'ouverture. Ceci est utile pour les scénarios où il faut montrer une notification à l'utilisateur et en même temps transmettre un contexte pour naviguer vers un écran spécifique.

TypeAuto-affichageTraitement en arrière-planExemple
NotificationOui, par le systèmeAutomatique, sans codeNotification push de bienvenue
DataNonVia callback de l'applicationSynchronisation de données en arrière-plan
CombinéOui, partie notificationPartie data à l'ouvertureNotification + lien de commande

Configuration de FCM dans Android

L'intégration de FCM dans Android commence par la connexion du SDK Firebase via le fichier build.gradle au niveau de l'application. Après avoir ajouté les dépendances et le fichier google-services.json, l'application reçoit automatiquement un Registration Token, transmis via le callback FirebaseMessagingService. Pour recevoir des notifications, il est nécessaire de créer un service étendant FirebaseMessagingService et de l'enregistrer dans AndroidManifest.xml.

Initialisation et obtention du jeton

Après la connexion du SDK Firebase, le jeton d'appareil est généré automatiquement sans code supplémentaire. Le jeton est disponible via FirebaseMessaging.getInstance().token, qui retourne un Task<String>. Pour suivre les mises à jour du jeton, la méthode onNewToken est surchargée dans le service. Le jeton doit être envoyé au serveur fournisseur afin que celui-ci puisse envoyer des notifications push à cet appareil.

kotlin
class MyFirebaseMessagingService :
    FirebaseMessagingService() {

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

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        val data = message.data
        val title = "Nouveau message"
        val body = data["body"] ?: ""
        showNotification(title, body)
    }
}

Enregistrement du service dans le manifeste

Le service de réception des messages FCM doit être enregistré dans AndroidManifest.xml avec les intent-filter appropriés. Ajoutez la balise service avec la permission INTERNET et l'action spécifiée. Sans enregistrement du service, les messages ne seront pas livrés à l'application en arrière-plan. Pour afficher les notifications sur Android 13+, la permission d'exécution POST_NOTIFICATIONS est requise.

xml
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
    "android.permission.POST_NOTIFICATIONS" />

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

Configuration de FCM dans iOS

L'intégration de FCM dans iOS nécessite une configuration à la fois du côté d'Apple Push Notification Service (APNs) et dans Firebase Console. Contrairement à Android où FCM gère la connexion directement, dans iOS FCM utilise APNs comme couche de transport. L'application s'enregistre pour recevoir les notifications push via UIApplication.shared.registerForRemoteNotifications, et le SDK Firebase intercepte le jeton d'appareil reçu et le lie au Registration Token FCM.

Configuration APNs et enregistrement des notifications

Pour que FCM fonctionne sur iOS, une clé ou un certificat APNs doit être téléchargé dans Firebase Console. La clé APNs est une méthode d'authentification moderne sans certificats (recommandée par Apple). La clé est créée dans Apple Developer Portal dans la section Keys et téléchargée dans les paramètres Cloud Messaging de Firebase Console. Après la configuration APNs, l'application demande l'autorisation de notification via UNUserNotificationCenter et s'enregistre via APNs.

swift
import Firebase
import UserNotifications

class AppDelegate: NSObject, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions
        launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current()
            .requestAuthorization(options: [.alert, .sound, .badge])
        application.registerForRemoteNotifications()
        return true
    }

    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken
        deviceToken: Data
    ) {
        Messaging.messaging()
            .apnsToken = deviceToken
    }
}

Traitement des notifications entrantes

Pour traiter les notifications reçues, le délégué UNUserNotificationCenter est implémenté. La méthode willPresent est appelée lorsqu'une notification est reçue avec l'application active — ici vous pouvez afficher une notification personnalisée in-app ou ignorer la bannière système. La méthode didReceive est appelée lorsque l'utilisateur tape sur la notification — ici la navigation vers l'écran correspondant est effectuée. Pour les messages data, le délégué MessagingDelegate est utilisé, qui reçoit la charge utile lors de la réception d'un message FCM en arrière-plan.

Envoi de messages depuis le serveur

L'envoi côté serveur des messages FCM s'effectue via l'API HTTP v1 de Firebase Cloud Messaging ou l'API legacy. L'API HTTP v1 est la méthode recommandée, utilise l'authentification OAuth 2.0 via un Service Account et prend en charge toutes les fonctionnalités modernes de FCM, y compris l'analyse de livraison et les tests A/B des notifications. La requête est envoyée par méthode POST au endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send.

Format de requête HTTP v1

Le corps de la requête contient un objet JSON avec les informations du message : target (jeton, sujet ou condition), notification (pour l'affichage) et data (charge utile personnalisée). L'authentification se fait via une clé JSON de Service Account chargée dans les variables d'environnement du serveur. Le jeton d'accès est généré à l'aide de la bibliothèque google-auth-library. Google recommande d'utiliser Firebase Admin SDK pour la gestion automatique de l'authentification et des tentatives.

js
const admin = require("firebase-admin")

const serviceAccount = require("./serviceAccountKey.json")

admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })

const message = {
    token: "device_registration_token",
    notification: { title: "Réduction de 20%", body: "Sur tous les services aujourd'hui" },
    data: { screen: "promo", promoId: "324" },
    android: { priority: "high" },
    apns: { payload: { aps: { sound: "default" } } }
}

admin.messaging().send(message)
    .then(response => {
        console.log("Envoyé avec succès :", response)
    })
    .catch(error => {
        console.log("Erreur d'envoi :", error)
    })

Sujets et envoi massif

Pour envoyer des notifications à un groupe d'utilisateurs, FCM prend en charge les abonnements aux sujets. Un sujet (topic) est un canal nommé auquel l'application cliente s'abonne via FirebaseMessaging.getInstance().subscribeToTopic(). Le serveur peut envoyer un message à un sujet et il sera livré à tous les appareils abonnés. Les sujets conviennent aux newsletters, aux notifications promotionnelles et aux push basés sur des événements. Pour une segmentation plus précise, des conditions basées sur plusieurs sujets avec des opérateurs logiques sont utilisées.

Questions fréquentes

Quelle est la différence entre FCM et APNs ?

FCM fonctionne sur Android via sa propre infrastructure Google, tandis que sur iOS il utilise APNs comme protocole de transport. FCM fournit une API unifiée pour les deux plateformes, un stockage automatique des messages hors ligne et une analyse de livraison, qui ne sont pas disponibles dans APNs pur.

Peut-on envoyer des messages FCM sans serveur ?

Oui, via Firebase Console dans la section Cloud Messaging, vous pouvez envoyer manuellement des notifications à des appareils, sujets ou segments d'audience sélectionnés. Cette fonction convient aux tests et aux envois ponctuels, mais ne remplace pas l'intégration serveur pour les applications de production.

Que faire si le jeton d'appareil change ?

Abonnez-vous aux mises à jour du jeton via onNewToken dans FirebaseMessagingService (Android) ou MessagingDelegate (iOS). Lorsque le jeton change, envoyez le nouveau jeton au serveur et supprimez l'ancien. Le serveur doit mettre à jour la base de données et cesser les tentatives d'envoi vers l'ancien jeton.

Comment FCM gère-t-il les appareils hors ligne ?

FCM stocke le message dans une file d'attente jusqu'à 28 jours et le livre lors du rétablissement de la connexion. Pour les messages notification, seul le dernier message de chaque groupe de collapse est replié. Les messages data sont stockés séparément et livrés dans l'ordre d'envoi sans repli.

Combien coûte l'utilisation de Firebase Cloud Messaging ?

FCM est entièrement gratuit sans limite sur le nombre de messages. L'utilisation de FCM n'est facturée ni dans le plan Spark ni dans le plan Blaze. Il existe uniquement des limites de taille de charge utile : jusqu'à 4 Ko pour les messages notification et jusqu'à 2 Ko pour les messages data.

Résumé

  • Firebase Cloud Messaging est un service multiplateforme de notifications push de Google prenant en charge Android, iOS, Web et Unity via une API unifiée.
  • L'architecture FCM se compose du serveur fournisseur, de l'infrastructure Firebase et de l'application cliente, garantissant une livraison fiable des messages via le réseau mondial de Google.
  • Trois types de messages — notification (affichage automatique), data (charge utile arbitraire sans UI) et combiné (les deux types dans un même message).
  • FCM sur Android fonctionne via FirebaseMessagingService avec sa propre connexion, tandis que sur iOS il utilise APNs comme transport avec interception de jeton via MessagingDelegate.
  • L'API HTTP v1 est recommandée pour l'envoi côté serveur avec authentification OAuth 2.0 via Service Account et prise en charge de l'analyse de livraison.
  • Les sujets permettent d'envoyer des messages à des groupes d'abonnés, et les conditions permettent de combiner plusieurs sujets pour une segmentation précise.
  • FCM est gratuit sans limite de messages, avec un stockage des messages hors ligne jusqu'à 28 jours et une taille maximale de charge utile de 4 Ko.

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