Topic Subscription in pushmeldingen — wat het is, hoe het werkt en wordt geconfigureerd

Auteur: IT Sectr Gepubliceerd: 2026-03-21 Leestijd: 8 min

Topic Subscription — een Firebase Cloud Messaging-mechanisme waarmee u apparaten kunt groeperen op interesses en meldingen kunt sturen naar hele categorieën abonnees. In plaats van naar duizenden afzonderlijke Registration Tokens te sturen, volstaat het om één bericht naar een onderwerp te sturen. Volgens Firebase, 2025 wordt Topic Subscription gebruikt in nieuwsapps, sportuitzendingen en marketingcampagnes voor massale meldingslevering.

Belangrijkste punten

  • Topic Subscription — abonnement van een apparaat op een thematisch FCM-kanaal voor het ontvangen van groepsmeldingen.
  • Eén apparaat kan zich abonneren op een onbeperkt aantal onderwerpen.
  • Het abonnement wordt zowel vanaf de client als vanaf de server beheerd via FCM HTTP API.
  • Het onderwerp wordt automatisch aangemaakt bij het eerste abonnement — vooraf configureren is niet nodig.
  • Om naar een onderwerp te sturen, volstaat het om de naam ervan op te geven in plaats van een lijst tokens.

Wat is Topic Subscription in FCM

Topic Subscription — is een mechanisme voor het groepsgewijs verzenden van pushmeldingen, waarbij apparaten zich abonneren op benoemde kanalen (onderwerpen) en berichten ontvangen die via deze kanalen worden verzonden. Elk onderwerp wordt geïdentificeerd door een tekenreeksnaam, bijvoorbeeld news_sports of weather_alerts.

Werkingsprincipe van onderwerpen

Wanneer een apparaat zich op een onderwerp abonneert, voegt FCM de Registration Token toe aan de lijst van ontvangers van dat onderwerp. Bij het verzenden van een bericht naar een onderwerp, stuurt FCM automatisch een kopie naar elk geabonneerd apparaat. Firebase beperkt het aantal abonnementen per apparaat niet — de applicatie kan de gebruiker op tientallen onderwerpen tegelijk abonneren.

Onderwerpen versus individueel verzenden

Het belangrijkste voordeel van onderwerpen is schaalbaarheid. Om een melding naar een miljoen gebruikers te sturen, is één HTTP-verzoek aan FCM met de naam van het onderwerp voldoende. Bij individueel verzenden zou een miljoen verzoeken of batchverzending van maximaal 500 tokens per keer nodig zijn. Onderwerpen vereenvoudigen ook de serverlogica — het is niet nodig om tokenlijsten voor elke categorie op te slaan.

ParameterIndividueel verzendenTopic Subscription
Aantal verzoekenEén per token of batch tot 500Eén per onderwerp
AbonnementbeheerOp de server (tokenlijst)Op de client of server
Dynamische groepenVereisen lijstupdateAutomatisch via abonnement
Limiet ontvangersTot 500 in één verzoekOnbeperkt

Voorbeelden van gebruik van onderwerpen

Topic Subscription wordt veel gebruikt in nieuwsapps voor het categoriseren van inhoud — abonneren op onderwerpen "Sport", "Politiek", "Technologie" maakt het mogelijk relevante meldingen te leveren. In e-commerce worden onderwerpen gebruikt voor meldingen over kortingen in specifieke productcategorieën. In messengers en sociale netwerken worden onderwerpen gebruikt voor meldingen over gebeurtenissen in groepen.

FCM-beperkingen en limieten

Firebase legt beperkingen op voor het werken met onderwerpen. Eén applicatie kan maximaal 2000 onderwerpen hebben. Elk apparaat kan zich op niet meer dan 2000 onderwerpen abonneren. De frequentie van abonneren/opzeggen is ook beperkt — niet meer dan 3000 operaties per minuut per project. Het overschrijden van limieten leidt tot tijdelijke blokkering. Voor projecten met een groot aantal onderwerpen wordt aanbevolen een conditie (condition) te gebruiken in plaats van een onderwerp — FCM ondersteunt logische expressies voor targeting.

Hoe onderwerpabonnement werkt

Het Topic Subscription-proces bestaat uit drie fasen: initialisatie van het abonnement op de client, registratie in de FCM-infrastructuur en bevestiging van de operatie. Na een succesvol abonnement begint het apparaat berichten te ontvangen die naar dat onderwerp zijn verzonden.

Levenscyclus van een abonnement

Wanneer de client de methode subscribeToTopic() aanroept, stuurt de Firebase SDK een verzoek naar de FCM-servers. De server controleert de toelaatbaarheid van de operatie en voegt de token van het apparaat toe aan de lijst van abonnees van het onderwerp. FCM retourneert de bevestiging van een succesvol abonnement aan de client. Vanaf dat moment worden alle berichten op dit onderwerp aan het apparaat geleverd.

Automatisch aanmaken van een onderwerp

Het onderwerp hoeft niet vooraf in de Firebase-console te worden aangemaakt. Bij het eerste abonnement van een apparaat op een onderwerp met de naam news_promo, maakt FCM het automatisch aan. Als het laatste apparaat het abonnement opzegt, blijft het onderwerp in het systeem maar inactief, en hervat het bij een nieuw abonnement.

Onderwerpabonnement op Android

Op Android worden abonneren en opzeggen van onderwerpen uitgevoerd via de FirebaseMessaging SDK. De methoden subscribeToTopic() en unsubscribeFromTopic() nemen de naam van het onderwerp als parameter. De operaties zijn asynchroon en vereisen verwerking van het resultaat.

Basisabonnement op een onderwerp

Om u te abonneren, volstaat het om subscribeToTopic() aan te roepen met de naam van het gewenste onderwerp. De Firebase SDK beheert netwerkverzoeken en herhaalpogingen bij fouten zelfstandig. Het wordt aanbevolen om u op onderwerpen te abonneren na het succesvol ontvangen van de 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", "Opgezegd: ${task.isSuccessful}")
            }
    }
}

Beheer van meerdere abonnementen

In echte applicaties kan een gebruiker zich op meerdere categorieën abonneren. Maak voor gemakkelijk beheer een managerklasse die de abonnementsstatus synchroniseert met de serverzijde. Herstel bij het inloggen van de gebruiker zijn abonnementen uit het profiel.

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")
    }
}

Onderwerpabonnement op iOS

Op iOS is het proces van abonneren op onderwerpen logisch identiek aan Android, maar gebruikt het de Swift API van Firebase Messaging. De methoden subscribe en unsubscribe worden aangeroepen op de Messaging-instantie en zijn ook asynchroon.

Implementatie van abonnement op iOS

Om u te abonneren op een onderwerp in een iOS-app, wordt de methode Messaging.subscribe() gebruikt. Het is belangrijk om het abonnement aan te roepen na initialisatie van Firebase en het ontvangen van de Registration Token. Apple raadt aan toestemming voor meldingen te vragen voordat u zich op onderwerpen abonneert.

swift
import FirebaseMessaging

class PushTopicManager {

    func subscribeToTopic(topic: String) {
        Messaging.messaging().subscribe(toTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Abonnementsfout: \(error)")
            } else {
                Log.d("FCM", "Geabonneerd op \(topic)")
            }
        }
    }

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

Kenmerken van iOS-abonnementen

Op iOS is het abonnement op een onderwerp ook gekoppeld aan de Registration Token die Firebase van APNs ontvangt. Als de APNs-token verandert (bijvoorbeeld na herstel van het apparaat), draagt Firebase de abonnementen automatisch over naar de nieuwe token. In zeldzame gevallen kan echter een hernieuwd abonnement nodig zijn na het bijwerken van de Registration Token.

Abonnementen beheren vanaf de server

Serverbeheer van abonnementen maakt het mogelijk apparaten te abonneren en op te zeggen zonder tussenkomst van de client-applicatie. Dit is handig voor beheer, A/B-testen en het beheren van abonnementen aan de backend-kant.

FCM HTTP API voor abonnementbeheer

Firebase biedt een REST API voor massaal abonnementbeheer. De methode /v1/projects/{project_id}/subscriptions maakt het mogelijk tot 1000 apparaten in één verzoek te abonneren. De API gebruikt de Registration Tokens van apparaten voor identificatie.

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("Abonnementsfout", error)
    }
}

Gebruiksscenario's van serverbeheer

Serverbeheer van abonnementen wordt in verschillende scenario's gebruikt. Bij registratie van een gebruiker abonneert de server hem automatisch op basisonderwerpen. Bij wijziging van voorkeuren in de webversie synchroniseert de server de abonnementen op het mobiele apparaat. Beheerders kunnen testapparaten op interne onderwerpen abonneren voor foutopsporing. Voor massa-operaties biedt FCM de methode Instance Group, waarmee abonnementen van een groep apparaten via één groeps-ID kunnen worden beheerd.

Monitoring van abonnementsstatus

Firebase biedt geen ingebouwde API voor het controleren van huidige abonnementen van een apparaat. Ontwikkelaars wordt aangeraden een eigen abonnementsdatabase aan de serverzijde bij te houden. Bij elke start van de applicatie synchroniseert de client zijn abonnementen met de server door een lijst van actieve onderwerpen te sturen. Dit maakt het mogelijk desynchronisatie te detecteren en abonnementen indien nodig te herstellen. Gebruik voor auditing de logs van Firebase Cloud Functions — elke subscribe/unsubscribe-operatie kan worden geregistreerd.

Veelgestelde vragen

Hoeveel onderwerpen kunnen worden aangemaakt in één Firebase-project?

Het maximale aantal onderwerpen is 2000 per applicatie. Als u meer nodig heeft, overweeg dan het gebruik van apparaatgroepen (Device Groups) of individueel verzenden op tokens.

Hoe kom ik te weten op welke onderwerpen een apparaat is geabonneerd?

Firebase biedt geen directe API om de abonnementslijst van een apparaat op te halen. Ontwikkelaars wordt aangeraden de abonnementsstatus op de eigen server op te slaan en deze met de client te synchroniseren.

Wat gebeurt er bij opzegging van een niet-bestaand onderwerp?

FCM retourneert een succesvol resultaat. Firebase behandelt opzegging van een niet-bestaand onderwerp als een no-op operatie — er worden geen fouten gegenereerd, de status verandert niet.

Kan ik meldingen naar een onderwerp sturen vanuit de Firebase-console?

Ja, in de Firebase-console in de sectie Cloud Messaging kunt u een onderwerp selecteren als doelgroep en een test- of productiemelding sturen via de webinterface.

Hoe snel wordt een onderwerpabonnement actief?

Meestal wordt het abonnement binnen enkele seconden geactiveerd. In zeldzame gevallen kan de vertraging echter 30–60 seconden bedragen door de verspreiding van informatie over FCM-servers.

Samenvatting

  • Topic Subscription — mechanisme voor het groepsgewijs verzenden van pushmeldingen via Firebase Cloud Messaging.
  • Abonneren gebeurt vanaf de client via de methoden subscribeToTopic() (Android) of subscribe() (iOS).
  • Eén apparaat kan tegelijkertijd op maximaal 2000 onderwerpen zijn geabonneerd.
  • De server-API maakt het mogelijk abonnementen van maximaal 1000 apparaten in één verzoek te beheren.
  • Het onderwerp wordt automatisch aangemaakt bij het eerste abonnement en vereist geen voorafgaande configuratie.
  • Topic Subscription heeft de voorkeur boven individueel verzenden bij het werken met grote doelgroepen.
  • Combineer voor kritieke meldingen onderwerpen met individueel verzenden voor leveringsgarantie.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook