Topic Subscription a push értesítésekben — mi ez, hogyan működik és állítható be

Szerző: IT Sectr Megjelenés: 2026-03-21 Olvasási idő: 8 perc

Topic Subscription — egy Firebase Cloud Messaging mechanizmus, amely lehetővé teszi az eszközök érdeklődési kör szerinti csoportosítását és értesítések küldését teljes előfizetői kategóriáknak. Ezer egyedi Registration Token külön-külön történő elküldése helyett elég egy üzenetet küldeni egy témára. A Firebase, 2025 adatai szerint a Topic Subscription híralkalmazásokban, sportközvetítésekben és marketingkampányokban használatos az értesítések tömeges kézbesítésére.

Főbb pontok

  • Topic Subscription — az eszköz feliratkozása egy tematikus FCM csatornára csoportos értesítések fogadásához.
  • Egy eszköz korlátlan számú témára feliratkozhat.
  • A feliratkozás mind a kliensről, mind a szerverről kezelhető a FCM HTTP API segítségével.
  • A téma az első feliratkozáskor automatikusan létrejön — előzetes beállítás nem szükséges.
  • Egy témára való küldéshez elég megadni a nevét a tokenek listája helyett.

Mi az a Topic Subscription az FCM-ben

Topic Subscription — egy csoportos push értesítési mechanizmus, amelyben az eszközök névvel ellátott csatornákra (témákra) fizetnek elő, és fogadják az ezekre a csatornákra küldött üzeneteket. Minden témát egy szöveges név azonosít, például news_sports vagy weather_alerts.

A témák működési elve

Amikor egy eszköz feliratkozik egy témára, az FCM hozzáadja a Registration Token-jét a téma címzettjeinek listájához. Amikor üzenetet küldenek egy témára, az FCM automatikusan eljuttat egy másolatot minden feliratkozott eszközhöz. A Firebase nem korlátozza az eszközönkénti feliratkozások számát — az alkalmazás több tucat témára is feliratkoztathatja a felhasználót egyszerre.

Témák versus egyéni küldés

A témák fő előnye a skálázhatóság. Egymillió felhasználónak történő értesítésküldéshez elég egyetlen HTTP kérés az FCM felé a téma nevével. Egyéni küldés esetén egymillió kérésre vagy tételes küldésre lenne szükség, legfeljebb 500 token egyszerre. A témák a szerveroldali logikát is egyszerűsítik — nem kell tokenlistákat tárolni minden kategóriához.

ParaméterEgyéni küldésTopic Subscription
Kérések számaEgy tokenenként vagy tételesen 500-igEgy témánként
Feliratkozás kezeléseA szerveren (tokenlista)A kliensen vagy szerveren
Dinamikus csoportokLista frissítését igényliAutomatikus feliratkozással
Címzettek korlátjaLegfeljebb 500 egy kérésbenKorlátlan

Példák témák használatára

A Topic Subscription széles körben használatos híralkalmazásokban a tartalom kategorizálására — a "Sport", "Politika", "Technológia" témákra való feliratkozás lehetővé teszi a releváns értesítések kézbesítését. Az e-kereskedelemben a témákat bizonyos termékkategóriák kedvezményeiről szóló értesítésekhez használják. Az üzenetküldőkben és közösségi hálózatokban a témákat csoportos eseményekről szóló értesítésekhez alkalmazzák.

FCM korlátozások és határok

A Firebase korlátozásokat ír elő a témákkal való munkára. Egy alkalmazás legfeljebb 2000 témával rendelkezhet. Minden eszköz legfeljebb 2000 témára iratkozhat fel. A feliratkozás/leiratkozás gyakorisága is korlátozott — projektenként legfeljebb 3000 művelet percenként. A korlátok túllépése ideiglenes blokkoláshoz vezet. Sok témával rendelkező projekteknél ajánlott feltételt (condition) használni a téma helyett — az FCM támogatja a logikai kifejezéseket a célzáshoz.

Hogyan működik a témákra való feliratkozás

A Topic Subscription folyamata három szakaszból áll: a feliratkozás inicializálása a kliensen, regisztráció az FCM infrastruktúrában és a művelet megerősítése. Sikeres feliratkozás után az eszköz elkezdi fogadni az adott témára küldött üzeneteket.

A feliratkozás életciklusa

Amikor a kliens meghívja a subscribeToTopic() metódust, a Firebase SDK kérést küld az FCM szervereknek. A szerver ellenőrzi a művelet megengedhetőségét, és hozzáadja az eszköz tokenjét a téma előfizetőinek listájához. Az FCM visszaküldi a kliensnek a sikeres feliratkozás visszaigazolását. Ettől a pillanattól kezdve a témára küldött összes üzenet kézbesítésre kerül az eszközre.

A téma automatikus létrehozása

A témát nem kell előre létrehozni a Firebase konzolban. Amikor bármely eszköz első alkalommal feliratkozik egy news_promo nevű témára, az FCM automatikusan létrehozza azt. Ha az utolsó eszköz leiratkozik, a téma a rendszerben marad, de inaktívvá válik, és új feliratkozáskor folytatja a működését.

Feliratkozás témákra Androidon

Androidon a témákra való feliratkozás és leiratkozás a FirebaseMessaging SDK-n keresztül történik. A subscribeToTopic() és unsubscribeFromTopic() metódusok paraméterként a téma nevét várják. A műveletek aszinkronok, és az eredmény feldolgozását igénylik.

Alap feliratkozás egy témára

A feliratkozáshoz elég meghívni a subscribeToTopic() metódust a kívánt téma nevével. A Firebase SDK önállóan kezeli a hálózati kéréseket és a hibák esetén történő újrapróbálkozásokat. Ajánlott a témákra való feliratkozás a Registration Token sikeres fogadása után.

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", "Leiratkozva: ${task.isSuccessful}")
            }
    }
}

Több feliratkozás kezelése

Valós alkalmazásokban a felhasználó több kategóriára is feliratkozhat. A kényelmes kezeléshez hozzon létre egy kezelő osztályt, amely szinkronizálja a feliratkozások állapotát a szerveroldallal. Amikor a felhasználó bejelentkezik, állítsa vissza a feliratkozásait a profilból.

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

Feliratkozás témákra iOS-en

iOS-en a témákra való feliratkozás folyamata logikailag megegyezik az Androidéval, de a Firebase Messaging Swift API-ját használja. A subscribe és unsubscribe metódusok a Messaging példányon hívódnak meg, és szintén aszinkronok.

Feliratkozás implementációja iOS-en

Egy iOS alkalmazásban egy témára való feliratkozáshoz a Messaging.subscribe() metódus használatos. Fontos, hogy a feliratkozást a Firebase inicializálása és a Registration Token fogadása után hívja meg. Az Apple az értesítések engedélyének kérését ajánlja a témákra való feliratkozás előtt.

swift
import FirebaseMessaging

class PushTopicManager {

    func subscribeToTopic(topic: String) {
        Messaging.messaging().subscribe(toTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Feliratkozási hiba: \(error)")
            } else {
                Log.d("FCM", "Feliratkozva: \(topic)")
            }
        }
    }

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

Az iOS feliratkozások jellemzői

iOS-en a témára való feliratkozás is a Registration Token-hez van kötve, amelyet a Firebase az APNs-től kap. Ha az APNs token megváltozik (például eszköz helyreállítása után), a Firebase automatikusan átviszi a feliratkozásokat az új tokenre. Ritka esetekben azonban szükség lehet a feliratkozás megújítására a Registration Token frissítése után.

Feliratkozások kezelése a szerverről

Szerveroldali kezelés lehetővé teszi az eszközök fel- és leiratkozását a kliensalkalmazás részvétele nélkül. Ez hasznos adminisztrációhoz, A/B teszteléshez és a feliratkozások backend oldali kezeléséhez.

FCM HTTP API feliratkozások kezeléséhez

A Firebase REST API-t biztosít a tömeges feliratkozáskezeléshez. A /v1/projects/{project_id}/subscriptions metódus lehetővé teszi akár 1000 eszköz feliratkozását egyetlen kérésben. Az API az eszközök Registration Token-jét használja azonosításra.

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("Feliratkozási hiba", error)
    }
}

A szerveroldali kezelés használati esetei

A szerveroldali feliratkozáskezelés több esetben használatos. Felhasználó regisztrációjakor a szerver automatikusan feliratkoztatja az alap témákra. A webes verzióban történő preferenciaváltozáskor a szerver szinkronizálja a feliratkozásokat a mobileszközön. Adminisztrátorok teszteszközöket irathatnak fel belső témákra hibakeresés céljából. Tömeges műveletekhez az FCM Instance Group metódust biztosít, amely lehetővé teszi egy eszközcsoport feliratkozásainak kezelését egyetlen csoportazonosítón keresztül.

Feliratkozások állapotának figyelése

A Firebase nem biztosít beépített API-t az eszköz aktuális feliratkozásainak ellenőrzéséhez. A fejlesztőknek ajánlott saját feliratkozási adatbázist vezetni a szerveroldalon. Az alkalmazás minden indításakor a kliens szinkronizálja feliratkozásait a szerverrel egy aktív témák listájának elküldésével. Ez lehetővé teszi a szinkronizálatlanság észlelését és a feliratkozások szükség szerinti helyreállítását. Auditáláshoz használja a Firebase Cloud Functions naplóit — minden subscribe/unsubscribe művelet naplózható.

Gyakran Ismételt Kérdések

Hány téma hozható létre egy Firebase projektben?

A témák maximális száma 2000 alkalmazásonként. Ha többre van szüksége, fontolja meg Eszközcsoportok (Device Groups) vagy egyéni tokenenkénti küldés használatát.

Hogyan tudhatom meg, hogy egy eszköz milyen témákra van feliratkozva?

A Firebase nem biztosít közvetlen API-t az eszköz feliratkozási listájának lekéréséhez. A fejlesztőknek ajánlott a feliratkozások állapotát a saját szerverükön tárolni és szinkronizálni a klienssel.

Mi történik, ha leiratkozom egy nem létező témáról?

Az FCM sikeres eredményt ad vissza. A Firebase a nem létező témáról való leiratkozást no-op műveletként kezeli — nem generálódnak hibák, az állapot nem változik.

Küldhetek értesítést egy témára a Firebase konzolból?

Igen, a Firebase konzol Cloud Messaging szekciójában kiválaszthatja a témát célközönségként, és teszt- vagy éles értesítést küldhet a webes felületen keresztül.

Milyen gyorsan lép életbe egy témára való feliratkozás?

A feliratkozás általában néhány másodpercen belül aktiválódik. Ritka esetekben azonban a késleltetés elérheti a 30–60 másodpercet az információ FCM szerverek közötti terjedése miatt.

Összegzés

  • Topic Subscription — csoportos push értesítési mechanizmus a Firebase Cloud Messaging segítségével.
  • A feliratkozás a kliensről történik a subscribeToTopic() (Android) vagy subscribe() (iOS) metódusokkal.
  • Egy eszköz egyszerre legfeljebb 2000 témára lehet feliratkozva.
  • A szerver API lehetővé teszi legfeljebb 1000 eszköz feliratkozásának kezelését egy kérésben.
  • A téma az első feliratkozáskor automatikusan létrejön, és nem igényel előzetes beállítást.
  • A Topic Subscription előnyösebb az egyéni küldéssel szemben nagy közönségek esetén.
  • Kritikus értesítések esetén kombinálja a témákat az egyéni küldéssel a kézbesítés garantálásához.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is