Messagerie Firebase Cloud (FCM) Il s'agit du service de Google permettant d'envoyer des notifications et des messages entre les serveurs et les applications sur Android, iOS et le Web. Permet la livraison de notifications visibles et de messages de données gratuit, avec des métriques et une segmentation lors de l'utilisation de la console Firebase, et avec une flexibilité maximale lors de l'intégration avec son API HTTP v1 ou le SDK Admin.
Si vous cherchez ce qu'est FCM, comment il fonctionne, quels types de messages il prend en charge, les options de livraison, les quotas, les ports, la sécurité, les limitations et les véritables alternatives (SNS, WebSocket/SSE, solutions propriétaires ou plateformes multicanaux comme EngageLab), voici un guide complet avec tous les essentiels décider, mettre en œuvre et exploiter à grande échelle.
Qu'est-ce que Firebase Cloud Messaging (FCM) ?
FCM est la solution de messagerie multiplateforme officielle de Google. intégré à Firebase. Il a remplacé Google Cloud Messaging (GCM) et vous permet d'envoyer des notifications push et des messages de données à des appareils individuels, des groupes ou des abonnés d'un sujet, soit à partir de votre propre serveur, de Cloud Functions ou de la console Firebase.
Son grand attrait est qu’il est gratuit. sur les plans Firebase, ce qui en fait l'option d'entrée de gamme habituelle pour les projets mobiles et Web. Il propose également des tests A/B et une segmentation. lors de l'utilisation du Notification Composer.

Comment fonctionne FCM
Une implémentation FCM typique comporte deux éléments: un environnement de confiance (par exemple, un serveur backend ou Cloud Functions) qui authentifie, compose et envoie les messages; et un application client (Android, iOS ou Web) qui reçoit et traite ces messages à travers le transport de chaque plateforme.
Envoyer, vous pouvez utiliser le SDK d'administration de Firebase ou du API HTTP v1. Pour des tâches de marketing, de test ou de communication ponctuelle, la console vous permet de créer des campagnes avec segmentation et analyses intégrées.
L'application cliente enregistre un jeton d'appareil et, le cas échéant, s'abonner aux sujetsLe backend envoie des messages en utilisant ce jeton, un pool de jetons ou un sujet, et FCM itinéraire et livraison selon les règles de priorité, la disponibilité et les options de livraison.

Types de messages dans FCM
FCM gère deux grandes familles de messages que vous pouvez combiner selon votre cas :
- Messages de notification: sont affichés par le SDK (si l'application est en arrière-plan) et exposés touches prédéfinies visible par l'utilisateur, avec la possibilité de joindre données.
- Messages de données: contenir paires clé-valeur personnalisées sous la clé
datay votre application les traite toujours, au premier plan ou à l'arrière-plan.
La charge utile maximale est généralement de 4096 XNUMX octets., avec des limites plus restrictives si vous utilisez la console. Si vous voulez un contrôle absolu du comportement, utilisez des messages de données ; si vous préférez que le système affiche la notification lorsque l'application est en arrière-plan, utilisez des messages de notification.
Messages de notification
Idéal pour les publicités visibles, les campagnes ou le réengagement. En arrière-plan, le système affiche le titre et le corps définis dans notificationAu premier plan, votre code décide que faire lorsqu'une notification arrive.
Vous pouvez les envoyer sans programmation en utilisant la console (segmentation, tests A/B, planification), ou par programmation avec Admin SDK/API v1 indiquant notification.title y notification.bodyet facultativement une charge data supplémentaire.
Messages de données
Ils sont utilisés pour que votre application fasse exactement ce dont vous avez besoin.. Dans la soumission, vous placez les paires clé-valeur sous data y vous évitez les mots réservés comme « de », « notification », « type_de_message » ou tout mot-clé commençant par « google » ou « gcm ».
Sur chaque plateforme, vous recevrez la charge utile dans un rappel. et vous pouvez décider d'afficher votre propre notification, de synchroniser les données, de naviguer vers un écran spécifique, etc.
Couche de sécurité:Utilisations du transport Android chiffrement de bout en bout. Si votre cas nécessite chiffrement de bout en bout, vous devrez l'implémenter vous-même (il existe des solutions tierces telles que Capillary ou DTLS).

Notifications avec données facultatives
Combiner notification + données C'est très courant : FCM montre la partie visible et votre application traite les donnéesEn arrière-plan, l'utilisateur voit la notification et lorsqu'il appuie dessus, votre application lit la charge utile. dataAu premier plan, vous recevez les deux charges et vous décidez du flux.
Utilisez cette technique pour les liens profonds, le suivi des campagnes ou la transmission de paramètres à l'écran qui s'ouvre après le clic. Essayez de conserver cohérence entre le message visible et l'action que vous exécutez ensuite.
Personnalisation par plateforme
L'API HTTP v1 et le SDK Admin vous permettent de définir des champs communs et spécifiques. par plateforme : AndroidConfig, ApnsConfig, WebpushConfig. Alors peut affiner le TTL, la priorité, les en-têtes et le comportement dans chaque système.
Quand utiliser les champs communs: lorsque vous tirez sur toutes les plates-formes à la fois ou sujets. Quand utiliser des éléments spécifiques: quand tu as besoin options de livraison ou des actions particulières par plateforme (par exemple, click_action sur Android et category chez Apple).
détail important:Même si vous souhaitez la même valeur (par exemple TTL) sur plusieurs plates-formes, le déclarer dans chaque bloc car chacun l'interprète différemment (secondes sur Android vs. date d'expiration sur les APN).
Options de livraison et contrôle du comportement
FCM propose des commandes pour ajuster les performances, la visibilité et la consommation: messages réductibles, priorité, durées de vie, etc. Choisissez ces paramètres avec soin. impacte la batterie et l'expérience utilisateur.
Messages pliables et non pliables
Non pliable- Chaque message est important et doit être transmis (par exemple, une conversation critique). Sur Android, il existe un limite de 100 messages dans la file d'attente sans s'effondrer ; s'il dépasse, ils sont rejetés et le client reçoit onDeletedMessages() afin que vous puissiez synchroniser.
Pliant:Si un nouveau arrive avec la même clé avant que le précédent ne soit livré, remplace le précédent. Utile pour rafraîchir les statuts (résultats sportifs, badges, synchronisations). Utiliser collapse_key sur Android, apns-collapse-id chez Apple et Topic en Web/JS. Le FCM peut contenir jusqu'à 4 clés de repli par jeton à la fois.
Priorité des messages
Normale: est livré dans les délais, en étant capable de décalage en arrière-plan. Convient pour la synchronisation de l'interface utilisateur, les nouveaux e-mails ou le contenu non urgent.
Élevée:FCM tente de le remettre immédiatement, même en mode veille. Réservez cette priorité pour contenu sensible au temps et visible. Chez Apple, le les données doivent être classées en priorité 5 (normal); l'envoi élevé peut revenir INVALID_ARGUMENT.
Durée de vie (TTL)
Le TTL limite la durée pendant laquelle FCM conserve le message si l'appareil n'est pas disponible. Sur Android et le Web, vous pouvez indiquer entre 0 et 2.419.200 secondes (28 jours). Avec TTL0 Il n'y a pas de stockage : soit il arrive maintenant, soit il est jeté, offrant ainsi la latence la plus faible possible dans les notifications « maintenant ou jamais ».
Cas non adaptés au FCM
N'utilisez pas le FCM en cas d'urgence ou pour des systèmes à haut risque. (maintien en vie, contrôle aérien, etc.). Les API sont fournies « en l'état » et ne sont pas conçues pour garantir ce niveau de service.
Délais et statuts de livraison réels
La réception d’un identifiant de message ne signifie pas qu’il est déjà sur l’appareil., sauf que FCM l'a accepté. Ensuite, cela dépend de la connexion, du mode veille, de la priorité et de la capacité à s'effondrer avant qu'il n'atteigne l'utilisateur.
Si l'appareil est hors ligneFCM stocke le message en respectant le TTL et les clés de réduction. À la reconnexion, il délivre les messages en attente. Si l'application est désinstallée, FCM rejette tout ce qui reste et invalide le jeton ; les soumissions ultérieures renverront NotRegistered.
Commande non garantie: FCM ne garantit pas la séquence d'arrivée. Programmez votre application pour tolérer la réorganisation et les états incohérents, forçant ainsi un synchronisation complète avant des signes tels que onDeletedMessages().
Régulation (étranglement) et quotas
Pour protéger la plateforme et la batterie des utilisateursIl existe des quotas et des limites. Avec l'API HTTP v1, le quota par défaut est 600.000 XNUMX messages/minute par projetSi vous le surmontez, vous verrez HTTP 429 jusqu'à ce que la minute suivante soit rétablie.
- Ce qui compte: les mesures de quotas messages, pas de requêtes ; les erreurs 4xx comptent également (sauf 429). Minutes de quota ils ne correspondent pas exactement avec l'horloge, et les graphiques GCP ne sont pas alignés au millimètre près non plus.
- Augmentation des quotas: Demandez un ascenseur si vous êtes habituellement à ≥80% pendant au moins 5 minutes/jour, avec <5% d'erreurs clients et en suivant les bonnes pratiques. Pour les pics importants (par exemple > 18 M de messages/min), veuillez en faire la demande auprès de jours 30 à l'avance.
- Distributions: sont limités à 1.000 XNUMX simultanés par projet (campagnes thématiques, groupes ou segments). L'approche optimale est une distribution active à la fois pour maximiser la vitesse.
- Abonnements thématiques: 3.000 XNUMX QPS par projet pour les ajouts/suppressions.
- Pliant:limitant le pic à 20 messages par application et appareil, avec remplacement de 1 toutes les 3 minutes.
- Tarif par appareil (Android): up 240/min et 5.000 XNUMX/h sur le même appareil. Ne travaillez pas près du haut : gaspille la batterie et peut être considéré comme abusif.
Ports et pare-feu requis par FCM
Si vous utilisez un pare-feu d'entreprise, vous devez autoriser les communications sortantes. vers FCM pour que les appareils reçoivent des messages. Les ports à ouvrir sont 5228, 5229, 5230 et 443.
Liste des hôtes recommandéscomprend mtalk.google.com et variantes (alt1-alt8), ainsi que des hôtes tels que android.apis.google.com, device-provisioning.googleapis.com y firebaseinstallations.googleapis.comIl est préférable de les autoriser par domaine si votre équipement réseau le prend en charge.
NAT/SPI: mettre en place un délai d'attente ≥ 30 minutes pour les connexions 5228–5230, maintenant la connectivité sans décharger la batterie avec des reconnexions fréquentes.
Les VPN et la possibilité de les contourner
Certains VPN rendent les connexions persistantes difficiles et masquer les signaux utilisés par FCM pour optimiser la diffusion et la consommation. Si le VPN le permet, FCM peut l'ignorer en utilisant une connexion cryptée directe (Wi-Fi/LTE), améliorant la fiabilité et la durée de vie de la batterie.
Lorsque le VPN n'est pas contournable, FCM utilisera la route VPN, avec une possible retards de livraison et des coûts de reconnexion plus élevés. Vérifiez le votre documentation VPN pour permettre le contournement sur le canal push si possible.
Informations d'identification et données dont vous avez besoin
Pour envoyer avec HTTP v1 vous avez besoin: ID du projet, jeton d'accès OAuth 2.0 de courte durée associé à un compte de serviceEt l' jetons d'enregistrement des périphériques cibles. Si vous utilisez des protocoles hérités (obsolètes), clé du serveur, mais ce n'est plus la voie recommandée.
L'identifiant de l'expéditeur identifie l'expéditeur qui peut envoyer à votre application et reste visible dans l'onglet Cloud Messaging de la console. Protégez les jetons: sont des secrets qui identifient les instances d'application.
Parcours de mise en œuvre et bonnes pratiques
- Configurer le SDK: Intégrez Firebase et FCM à votre application conformément aux directives de votre plateforme. Assurez-vous demander la permission le cas échéant (web/iOS) et gérer le jeton d'enregistrement (rotation, renouvellement).
- Développer l'application client: gère les rappels de messages, abonnements aux sujets, liens profonds, notifications de premier plan et persistance si vous avez besoin de montrer l'histoire.
- Développer le serveur: décidez si vous utiliserez SDK d'administration o HTTP v1, met en œuvre Authentification, composition, files d'attente d'envoi et analyse des réponses (y compris les erreurs de nettoyage des jetons). Dans les scénarios de messagerie en amont, utilisez XMPP (ne convient pas à Cloud Functions en raison de sa connexion persistante ; vous aurez besoin de votre propre backend).
- Essayez avec la console:Pendant le développement, le Notification Composer facilite messages de test, segmentation et tests A/B sans écrire de code.
Études de cas : Xamarin.Android et XenMobile
Xamarin.Android:Il existe des guides étape par étape pour ajouter FCM et notifications à distance, enregistrez le service de messagerie, préparez le manifeste, gérez les jetons et vérifiez le flux avec les soumissions depuis la console. C'est une référence claire pour visualiser l'ensemble du pipeline.
XenMobile (Citrix):FCM est recommandé pour reconnexions forcées des appareils Android en réponse à des actions ou déploiements de sécurité. Nécessite Hub sécurisé actuel, Services Google Play et configuration pare-feu (443/5228-5230). Vous pouvez utiliser l'ancienne API jusqu'à la migration, mais migration vers HTTP v1 implique l'utilisation d'un Compte de service JSON. La console XenMobile vous permet de télécharger ce fichier et tester avec des actions comme effacement sélectif.
Avantages, limites réelles et coûts d'exploitation
Avantages: gratuit, fiable, faible consommation Lorsqu'il est correctement configuré, compatible avec Android/iOS/Web et avec outils de marketing (A/B, segmentation) depuis la console.
Limitations: Prise en charge limitée des chaînes (Android/APN/Web) et sans canaux de fabricants largement utilisé en Asie (Huawei, OPPO, Vivo, etc.), possible impact sur la vitesse/la livraison sur ces marchés, absence de fonctions d'entreprise prêt à l'emploi (contrôle de fréquence, ciblage avancé, modèles multilingues complexes), sécurité avancée (RBAC granulaire, restriction IP) et support dédié (soutenu par la documentation et les forums).
Coûts cachés:Pour des campagnes sérieuses à grande échelle, de nombreuses entreprises finissent par investir dans développement personnalisé (segmentation, analyses, tableaux de bord opérationnels, repli des canaux, optimisation des fuseaux horaires), augmentant la complexité de maintenance et mise à l'échelle.
Alternatives au FCM et quand choisir chacune d'elles
WebSocket/SSE: ils contribuent communication bidirectionnelle en temps réel (ou unidirectionnel dans SSE) idéal pour les chats ou la collaboration là où cela est nécessaire synchronisation instantanée. Ils nécessitent un backend et un client plus complexes. notifications push classiques avec l'application en arrière-plan, FCM est généralement meilleur.
Amazon SNS:Service AWS avec multicanal (push, SMS, email, HTTP/HTTPS), intégration avec CloudWatch et les capacités de l’entreprise (segmentation, sécurité). Paiement au volume. Si vous êtes déjà sur AWS et avez besoin orchestration omnicanal, peut vous apporter plus de valeur à grande échelle.
Systèmes propres: contrôle maximal et adaptation aux exigences uniques, mais avec coût de construction élevé (6 à 12 mois) et l'entretien. Vous devez maîtriser protocoles push (FCM/APN/canaux du fabricant), files d'attente, algorithmes de livraison, analyse et sécurité.
EngageLab: plateforme d'engagement client avec livraison multicanal (FCM, APN et chaînes de fabricants tels que Huawei, OPPO, Vivo, Honor, Meizu) et leurs propres chaînes. Augmenter le taux de livraison (surtout en Asie), offre segmentation avancée, modèles, optimisation par fuseau horaire, analyses de bout en bout, éditeurs visuels, contrôle de fréquence en un clic, environnements de test, A/B intégré, centres de données mondiaux y Assistance 24/7Modèle de tarification par DAU et volume avec des estimateurs pour éviter les surprises.
Migration des API héritées vers HTTP v1
Google a retiré les anciennes API, vous devriez donc utiliser HTTP v1 avec authentification via Compte de service et OAuth 2.0Ils changent le format des messages (objet message avec des blocs par plateforme), le têtes et la gestion des réponses.
Plan de migration recommandé: préparer l'environnement de test, rediriger progressivement le trafic (vous pouvez utiliser A/B pour comparer les métriques), surveiller les erreurs comme 429, INVALID_ARGUMENT et des jetons invalides, et la migration se termine lorsque la stabilité et la livraison sont équivalentes ou meilleures.
Bien que FCM couvre la plupart des besoins de messagerie et de notification de base sans coût direct, avec un contrôle de livraison précis et des quotas clairs, si votre marché comprend des appareils avec des canaux de fournisseurs ou nécessite des fonctionnalités d'entreprise prêtes à l'emploi, c'est une bonne idée d'évaluer des alternatives telles que SNS ou des suites multicanaux comme EngageLab, ou de prévoir un budget pour un développement supplémentaire afin de compléter les limitations inhérentes à FCM.