Abonnement à un Sujet dans les Notifications Push — Définition, Fonctionnement et Configuration

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

L'abonnement à un sujet est un mécanisme de Firebase Cloud Messaging qui permet de regrouper les appareils par centres d'intérêt et d'envoyer des notifications à des catégories entières d'abonnés. Au lieu d'envoyer à des milliers de Registration Tokens individuels, il suffit d'envoyer un message à un sujet. Selon Firebase, 2025, l'abonnement à un sujet est utilisé dans les applications d'actualités, les diffusions sportives et les campagnes marketing pour la livraison à grande échelle de notifications.

Points Clés

  • Abonnement à un sujet — abonnement d'un appareil à un canal thématique FCM pour recevoir des notifications groupées.
  • Un seul appareil peut s'abonner à un nombre illimité de sujets.
  • L'abonnement est géré à la fois depuis le client et le serveur via l'API HTTP FCM.
  • Le sujet est créé automatiquement lors du premier abonnement — aucune configuration préalable n'est requise.
  • Pour envoyer à un sujet, il suffit de spécifier son nom au lieu d'une liste de jetons.

Qu'est-ce que l'abonnement à un sujet dans FCM

L'abonnement à un sujet est un mécanisme de livraison groupée de notifications push où les appareils s'abonnent à des canaux nommés (sujets) et reçoivent les messages envoyés à ces canaux. Chaque sujet est identifié par un nom de chaîne, comme news_sports ou weather_alerts.

Principe de fonctionnement des sujets

Lorsqu'un appareil s'abonne à un sujet, FCM ajoute son Registration Token à la liste des destinataires de ce sujet. Lors de l'envoi d'un message au sujet, FCM achemine automatiquement une copie à chaque appareil abonné. Firebase ne limite pas le nombre d'abonnements par appareil — une application peut abonner un utilisateur à des dizaines de sujets simultanément.

Sujets vs envoi individuel

Le principal avantage des sujets est l'évolutivité. Pour envoyer une notification à un million d'utilisateurs, une seule requête HTTP à FCM avec le nom du sujet suffit. Avec l'envoi individuel, il faudrait un million de requêtes ou un envoi par lot de jusqu'à 500 jetons à la fois. Les sujets simplifient également la logique serveur — il n'est pas nécessaire de stocker des listes de jetons pour chaque catégorie.

ParamètreEnvoi individuelAbonnement à un sujet
Nombre de requêtesUne par jeton ou lot jusqu'à 500Une par sujet
Gestion des abonnementsSur le serveur (liste de jetons)Sur le client ou le serveur
Groupes dynamiquesNécessitent une mise à jour de la listeAutomatique via abonnement
Limite de destinatairesJusqu'à 500 par requêteIllimité

Exemples d'utilisation des sujets

L'abonnement à un sujet est largement utilisé dans les applications d'actualités pour la catégorisation du contenu — s'abonner aux sujets « Sports », « Politique », « Technologie » permet de délivrer des notifications pertinentes. Dans l'e-commerce, les sujets sont utilisés pour les notifications concernant les remises dans des catégories de produits spécifiques. Dans les messageries et les réseaux sociaux, les sujets sont utilisés pour les notifications d'événements dans les groupes.

Limitations et quotas FCM

Firebase impose des restrictions sur le travail avec les sujets. Une seule application peut avoir jusqu'à 2000 sujets. Chaque appareil peut s'abonner à 2000 sujets maximum. La fréquence des opérations d'abonnement/résiliation est également limitée — 3000 opérations maximum par minute par projet. Le dépassement de ces limites entraîne un blocage temporaire. Pour les projets avec un grand nombre de sujets, il est recommandé d'utiliser des conditions plutôt que des sujets — FCM prend en charge les expressions logiques pour le ciblage.

Comment fonctionne l'abonnement à un sujet

Le processus d'abonnement à un sujet comprend trois étapes : initialisation de l'abonnement sur le client, inscription dans l'infrastructure FCM et confirmation de l'opération. Après un abonnement réussi, l'appareil commence à recevoir les messages envoyés à ce sujet.

Cycle de vie de l'abonnement

Lorsque le client appelle la méthode subscribeToTopic(), le SDK Firebase envoie une requête aux serveurs FCM. Le serveur valide l'opération et ajoute le jeton de l'appareil à la liste des abonnés du sujet. FCM renvoie au client une confirmation d'abonnement réussi. À partir de ce moment, tous les messages envoyés à ce sujet seront livrés à l'appareil.

Création automatique du sujet

Il n'est pas nécessaire de créer un sujet à l'avance dans la console Firebase. Lorsque le premier appareil s'abonne à un sujet nommé news_promo, FCM le crée automatiquement. Si le dernier appareil se désabonne, le sujet reste dans le système mais inactif, et reprend son fonctionnement lorsqu'un nouvel abonnement se produit.

Abonnement à un sujet sur Android

Sur Android, l'abonnement et la résiliation aux sujets s'effectuent via le SDK FirebaseMessaging. Les méthodes subscribeToTopic() et unsubscribeFromTopic() acceptent le nom du sujet comme paramètre. Les opérations sont asynchrones et nécessitent un traitement du résultat.

Abonnement de base à un sujet

Pour s'abonner, il suffit d'appeler subscribeToTopic() avec le nom du sujet cible. Le SDK Firebase gère automatiquement les requêtes réseau et les tentatives en cas d'échec. Il est recommandé de s'abonner aux sujets après avoir obtenu avec succès un Registration Token.

kotlin
class TopicSubscriber(private val context: Context) {

    fun subscribeToNewsTopic() {
        FirebaseMessaging.getInstance()
            .subscribeToTopic("news_latest")
            .addOnCompleteListener { task ->
                val msg = if (task.isSuccessful) {
                    "Subscribed to news topic"
                } else {
                    "Subscription failed"
                }
                Log.d("FCM", msg)
            }
    }

    fun unsubscribeFromNewsTopic() {
        FirebaseMessaging.getInstance()
            .unsubscribeFromTopic("news_latest")
            .addOnCompleteListener { task ->
                Log.d("FCM", "Désabonné : ${task.isSuccessful}")
            }
    }
}

Gestion des abonnements multiples

Dans les applications réelles, un utilisateur peut s'abonner à plusieurs catégories. Pour une gestion pratique, créez une classe gestionnaire qui synchronise l'état des abonnements avec le serveur. Lorsqu'un utilisateur se connecte, restaurez ses abonnements à partir de son profil.

kotlin
class SubscriptionManager(private val context: Context) {

    private val fcm = FirebaseMessaging.getInstance()

    suspend fun syncSubscriptions(topics: List<String>) {
        topics.forEach { topic ->
            fcm.subscribeToTopic(topic).await()
        }
    }

    suspend fun removeAllSubscriptions() {
        val savedTopics = getSavedTopics()
        savedTopics.forEach { topic ->
            fcm.unsubscribeFromTopic(topic).await()
        }
    }

    private fun getSavedTopics(): List<String> {
        return listOf("news_latest", "promotions", "updates")
    }
}

Abonnement à un sujet sur iOS

Sur iOS, le processus d'abonnement à un sujet est identique à celui d'Android dans sa logique, mais utilise l'API Swift Firebase Messaging. Les méthodes subscribe et unsubscribe sont appelées sur l'instance de Messaging et sont également asynchrones.

Implémentation de l'abonnement sur iOS

Pour s'abonner à un sujet dans une application iOS, utilisez la méthode Messaging.subscribe(). Il est important d'appeler l'abonnement après l'initialisation de Firebase et l'obtention du Registration Token. Apple recommande de demander l'autorisation de notification avant de s'abonner à des sujets.

swift
import FirebaseMessaging

class PushTopicManager {

    func subscribeToTopic(topic: String) {
        Messaging.messaging().subscribe(toTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Erreur d'abonnement : \(error)")
            } else {
                Log.d("FCM", "Abonné à \(topic)")
            }
        }
    }

    func unsubscribeFromTopic(topic: String) {
        Messaging.messaging().unsubscribe(fromTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Erreur de désabonnement : \(error)")
            }
        }
    }
}

Particularités des abonnements iOS

Sur iOS, l'abonnement à un sujet est également lié au Registration Token que Firebase reçoit d'APNs. Si le jeton APNs change (par exemple, après une restauration de l'appareil), Firebase transfère automatiquement les abonnements vers le nouveau jeton. Cependant, dans de rares cas, un réabonnement peut être nécessaire après une mise à jour du Registration Token.

Gestion des abonnements depuis le serveur

La gestion côté serveur des abonnements permet d'abonner et de désabonner des appareils sans impliquer l'application cliente. C'est utile pour l'administration, les tests A/B et la gestion des abonnements côté backend.

API HTTP FCM pour la gestion des abonnements

Firebase fournit une API REST pour la gestion de masse des abonnements. Le point de terminaison /v1/projects/{project_id}/subscriptions permet d'abonner jusqu'à 1000 appareils en une seule requête. L'API utilise les Registration Tokens des appareils pour l'identification.

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

async function subscribeUsersToTopic(tokens, topic) {
    try {
        const response = await admin
            .messaging()
            .subscribeToTopic(tokens, topic)
        Log.info(`Success: ${response.successCount}`)
        Log.info(`Failures: ${response.failureCount}`)
    } catch (error) {
        Log.error("Erreur d'abonnement", error)
    }
}

Scénarios d'utilisation de la gestion serveur

La gestion des abonnements côté serveur est utilisée dans plusieurs scénarios. Lors de l'inscription d'un utilisateur, le serveur l'abonne automatiquement aux sujets de base. Lorsque les préférences changent dans la version web, le serveur synchronise les abonnements sur l'appareil mobile. Les administrateurs peuvent abonner des appareils de test à des sujets internes pour le débogage. Pour les opérations de masse, FCM fournit la méthode Instance Group, qui permet de gérer les abonnements d'un groupe d'appareils via un seul identifiant de groupe.

Surveillance de l'état des abonnements

Firebase ne fournit pas d'API intégrée pour vérifier les abonnements actuels d'un appareil. Il est recommandé aux développeurs de maintenir leur propre base de données d'abonnements côté serveur. À chaque lancement de l'application, le client synchronise ses abonnements avec le serveur en envoyant la liste des sujets actifs. Cela permet d'identifier la désynchronisation et de restaurer les abonnements si nécessaire. Pour l'audit, utilisez les logs Firebase Cloud Functions — chaque opération d'abonnement/résiliation peut être journalisée.

Foire Aux Questions

Combien de sujets peut-on créer dans un projet Firebase ?

Le nombre maximum de sujets est de 2000 par application. Si vous avez besoin de plus, envisagez d'utiliser des groupes d'appareils ou un envoi individuel par jetons.

Comment savoir à quels sujets un appareil est abonné ?

Firebase ne fournit pas d'API directe pour obtenir la liste des abonnements d'un appareil. Il est recommandé aux développeurs de stocker l'état des abonnements sur leur propre serveur et de le synchroniser avec le client.

Que se passe-t-il lors de la résiliation d'un sujet inexistant ?

FCM renvoie un résultat réussi. Firebase traite la résiliation d'un sujet inexistant comme une opération no-op — aucune erreur n'est générée, l'état ne change pas.

Puis-je envoyer des notifications à un sujet depuis la console Firebase ?

Oui, dans la console Firebase, section Cloud Messaging, vous pouvez sélectionner un sujet comme audience cible et envoyer une notification de test ou de production via l'interface web.

À quelle vitesse un abonnement à un sujet prend-il effet ?

Normalement, l'abonnement est activé en quelques secondes. Cependant, dans de rares cas, le délai peut atteindre 30 à 60 secondes en raison de la propagation sur les serveurs FCM.

Résumé

  • L'abonnement à un sujet est un mécanisme de livraison groupée de notifications push via Firebase Cloud Messaging.
  • L'abonnement s'effectue depuis le client à l'aide des méthodes subscribeToTopic() (Android) ou subscribe() (iOS).
  • Un seul appareil peut être abonné à jusqu'à 2000 sujets simultanément.
  • L'API serveur permet de gérer les abonnements de jusqu'à 1000 appareils en une seule requête.
  • Un sujet est créé automatiquement lors du premier abonnement et ne nécessite aucune configuration préalable.
  • L'abonnement à un sujet est préférable à l'envoi individuel lorsqu'on travaille avec de larges audiences.
  • Pour les notifications critiques, combinez les sujets avec l'envoi individuel pour garantir la livraison.

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