Push bildirişlərində Topic Subscription — bu nədir, necə işləyir və quraşdırılır

Müəllif: IT Sectr Dərc olunub: 2026-03-21 Oxuma vaxtı: 8 dəq

Topic Subscription — cihazları maraqlarına görə qruplaşdırmağa və bütün abunəçi kateqoriyalarına bildiriş göndərməyə imkan verən Firebase Cloud Messaging mexanizmidir. Minlərlə fərdi Registration Token-a göndərmək əvəzinə, bir mövzuya bir mesaj göndərmək kifayətdir. Firebase, 2025 məlumatlarına görə, Topic Subscription xəbər tətbiqlərində, idman yayımlarında və marketinq kampaniyalarında bildirişlərin kütləvi çatdırılması üçün istifadə olunur.

Əsas məqamlar

  • Topic Subscription — qrup bildirişləri almaq üçün cihazın FCM tematik kanalına abunə olması.
  • Bir cihaz qeyri-məhdud sayda mövzuya abunə ola bilər.
  • Abunəlik həm müştəri, həm də server tərəfdən FCM HTTP API vasitəsilə idarə olunur.
  • Mövzu ilk abunəlikdə avtomatik yaradılır — ilkin quraşdırma tələb olunmur.
  • Mövzuya göndərmək üçün token siyahısı əvəzinə onun adını göstərmək kifayətdir.

FCM-də Topic Subscription nədir

Topic Subscription — cihazların adlandırılmış kanallara (mövzulara) abunə olduğu və bu kanallara göndərilən mesajları aldığı qrup push bildiriş mexanizmidir. Hər bir mövzu bir sətir adı ilə müəyyən edilir, məsələn news_sports və ya weather_alerts.

Mövzuların iş prinsipi

Cihaz bir mövzuya abunə olduqda, FCM onun Registration Token-nı bu mövzunun alıcılar siyahısına əlavə edir. Mövzuya mesaj göndərildikdə, FCM avtomatik olaraq hər bir abunə olunmuş cihaza surəti çatdırır. Firebase bir cihazdakı abunəlik sayını məhdudlaşdırmır — tətbiq istifadəçini eyni anda onlarla mövzuya abunə edə bilər.

Mövzular fərdi göndərməyə qarşı

Mövzuların əsas üstünlüyü miqyaslana bilməsidir. Bir milyon istifadəçiyə bildiriş göndərmək üçün FCM-ə mövzu adı ilə bir HTTP sorğusu kifayətdir. Fərdi göndərmədə bir milyon sorğu və ya hər dəfə 500 token-lik toplu göndərmə tələb olunardı. Mövzular həmçinin server hissəsinin məntiqini sadələşdirir — hər kateqoriya üçün token siyahılarını saxlamağa ehtiyac yoxdur.

ParametrFərdi göndərməTopic Subscription
Sorğu sayıHər token üçün bir və ya toplu 500-ə qədərHər mövzu üçün bir
Abunəlik idarəsiServerdə (token siyahısı)Müştəri və ya serverdə
Dinamik qruplarSiyahı yenilənməsi tələb edirAbunəlik vasitəsilə avtomatik
Alıcı limitiBir sorğuda 500-ə qədərLimitsiz

Mövzuların istifadə nümunələri

Topic Subscription məzmunu kateqoriyalaşdırmaq üçün xəbər tətbiqlərində geniş istifadə olunur — "İdman", "Siyasət", "Texnologiyalar" mövzularına abunəlik müvafiq bildirişlər çatdırmağa imkan verir. E-commerce-də mövzular müəyyən məhsul kateqoriyalarında endirimlər barədə bildirişlər üçün istifadə olunur. Messencerlərdə və sosial şəbəkələrdə mövzular qruplardakı hadisələr barədə xəbərdarlıqlar üçün tətbiq edilir.

FCM məhdudiyyətləri və limitləri

Firebase mövzularla işə məhdudiyyətlər qoyur. Bir tətbiq 2000 mövzuya qədər sahib ola bilər. Hər bir cihaz 2000-dən çox olmayan mövzuya abunə ola bilər. Abunəlik/ləğv tezliyi də məhduddur — layihə başına dəqiqədə 3000-dən çox olmayan əməliyyat. Limitlərin aşılması müvəqqəti blokadaya səbəb olur. Çox sayda mövzusu olan layihələr üçün mövzu əvəzinə şərt (condition) istifadə etmək tövsiyə olunur — FCM hədəfləmə üçün məntiqi ifadələri dəstəkləyir.

Mövzu abunəliyi necə işləyir

Topic Subscription prosesi üç mərhələdən ibarətdir: müştəridə abunəliyin başladılması, FCM infrastrukturunda qeydiyyat və əməliyyatın təsdiqi. Uğurlu abunəlikdən sonra cihaz həmin mövzuya göndərilən mesajları almağa başlayır.

Abunəliyin həyat dövrü

Müştəri subscribeToTopic() metodunu çağırdıqda, Firebase SDK FCM serverlərinə sorğu göndərir. Server əməliyyatın icazəliliyini yoxlayır və cihazın token-nı mövzunun abunəçilər siyahısına əlavə edir. FCM müştəriyə uğurlu abunəlik barədə təsdiq qaytarır. Bu andan etibarən həmin mövzuya bütün mesajlar cihaza çatdırılacaq.

Mövzunun avtomatik yaradılması

Mövzunu Firebase konsolunda əvvəlcədən yaratmaq tələb olunmur. Hər hansı bir cihaz news_promo adlı mövzuya ilk dəfə abunə olduqda, FCM onu avtomatik yaradır. Son cihaz abunəliyi ləğv edərsə, mövzu sistemdə qalır, lakin qeyri-aktiv olur və yeni abunəlikdə işini bərpa edir.

Android-də mövzu abunəliyi

Android-də mövzulara abunəlik və ləğv FirebaseMessaging SDK vasitəsilə həyata keçirilir. subscribeToTopic() və unsubscribeFromTopic() metodları parametr kimi mövzu adını qəbul edir. Əməliyyatlar asinxrondur və nəticənin işlənməsini tələb edir.

Əsas mövzu abunəliyi

Abunə olmaq üçün hədəf mövzu adı ilə subscribeToTopic() çağırmaq kifayətdir. Firebase SDK şəbəkə sorğularını və nasazlıqlar zamanı təkrar cəhdləri müstəqil idarə edir. Registration Token uğurla alındıqdan sonra mövzulara abunə olmaq tövsiyə olunur.

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", "Abunəlik ləğv edildi: ${task.isSuccessful}")
            }
    }
}

Çoxsaylı abunəliklərin idarə edilməsi

Real tətbiqlərdə istifadəçi bir neçə kateqoriyaya abunə ola bilər. Rahat idarəetmə üçün abunəlik vəziyyətini server hissəsi ilə sinxronlaşdıran menecer sinfi yaradın. İstifadəçi sistemə daxil olduqda onun abunəliklərini profildən bərpa edin.

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

iOS-da mövzu abunəliyi

iOS-da mövzu abunəliyi prosesi məntiqən Android ilə eynidir, lakin Firebase Messaging-in Swift API-sindən istifadə edir. subscribe və unsubscribe metodları Messaging nümunəsində çağırılır və həmçinin asinxrondur.

iOS-da abunəliyin tətbiqi

iOS tətbiqində mövzuya abunə olmaq üçün Messaging.subscribe() metodundan istifadə olunur. Abunəliyi Firebase-in başladılması və Registration Token alındıqdan sonra çağırmaq vacibdir. Apple mövzulara abunə olmadan əvvəl bildirişlərə icazə istəməyi tövsiyə edir.

swift
import FirebaseMessaging

class PushTopicManager {

    func subscribeToTopic(topic: String) {
        Messaging.messaging().subscribe(toTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Abunəlik xətası: \(error)")
            } else {
                Log.d("FCM", "Abunə olundu \(topic)")
            }
        }
    }

    func unsubscribeFromTopic(topic: String) {
        Messaging.messaging().unsubscribe(fromTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Abunəliyin ləğvi xətası: \(error)")
            }
        }
    }
}

iOS abunəliklərinin xüsusiyyətləri

iOS-da mövzu abunəliyi də Firebase-in APNs-dən aldığı Registration Token ilə əlaqələndirilir. APNs tokeni dəyişərsə (məsələn, cihaz bərpa edildikdən sonra), Firebase avtomatik olaraq abunəlikləri yeni tokenə köçürür. Bununla belə, nadir hallarda Registration Token yeniləndikdən sonra təkrar abunəlik tələb oluna bilər.

Abunəliklərin serverdən idarə edilməsi

Server idarəsi abunəlikləri müştəri tətbiqi iştirak etmədən cihazları abunə etməyə və ləğv etməyə imkan verir. Bu, administrasiya, A/B testi və backend tərəfdə abunəliklərin idarə edilməsi üçün faydalıdır.

Abunəliklərin idarə edilməsi üçün FCM HTTP API

Firebase kütləvi abunəlik idarəsi üçün REST API təmin edir. /v1/projects/{project_id}/subscriptions metodu bir sorğuda 1000 cihaza qədər abunə olmağa imkan verir. API identifikasiya üçün cihazların Registration Token-nı istifadə edir.

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("Abunəlik xətası", error)
    }
}

Server idarəsinin istifadə ssenariləri

Server tərəfindən abunəlik idarəsi bir neçə ssenaridə tətbiq olunur. İstifadəçi qeydiyyatı zamanı server onu avtomatik olaraq əsas mövzulara abunə edir. Veb versiyada seçimlər dəyişdikdə server mobil cihazdakı abunəlikləri sinxronlaşdırır. Administratorlar debug üçün test cihazlarını daxili mövzulara abunə edə bilər. Kütləvi əməliyyatlar üçün FCM Instance Group metodunu təqdim edir ki, bu da bir qrup identifikatoru vasitəsilə cihaz qrupunun abunəliklərini idarə etməyə imkan verir.

Abunəlik vəziyyətinin monitorinqi

Firebase cihazın cari abunəliklərini yoxlamaq üçün daxili API təmin etmir. Developerlərə öz server tərəfində abunəlik bazasını saxlamaq tövsiyə olunur. Tətbiqin hər başladılmasında müştəri aktiv mövzular siyahısını göndərərək abunəliklərini serverlə sinxronlaşdırır. Bu, desinxronizasiyanı aşkar etməyə və lazım olduqda abunəlikləri bərpa etməyə imkan verir. Audit üçün Firebase Cloud Functions loglarından istifadə edin — hər bir subscribe/unsubscribe əməliyyatı qeydə alına bilər.

Tez-tez verilən suallar

Bir Firebase layihəsində neçə mövzu yaratmaq olar?

Maksimum mövzu sayı — bir tətbiq üçün 2000. Daha çox lazımdırsa, Device Groups (cihaz qrupları) və ya tokenlər üzrə fərdi göndərməyə baxın.

Cihazın hansı mövzulara abunə olduğunu necə öyrənmək olar?

Firebase cihazın abunəlik siyahısını əldə etmək üçün birbaşa API təmin etmir. Developerlərə abunəlik vəziyyətini öz serverlərində saxlamaq və onu müştəri ilə sinxronlaşdırmaq tövsiyə olunur.

Mövcud olmayan mövzudan abunəliyi ləğv etdikdə nə baş verir?

FCM uğurlu nəticə qaytarır. Firebase mövcud olmayan mövzudan abunəliyin ləğvini no-op əməliyyatı kimi emal edir — heç bir xəta yaranmır, vəziyyət dəyişmir.

Firebase konsolundan mövzuya bildiriş göndərmək olar?

Bəli, Firebase konsolunda Cloud Messaging bölməsində mövzunu hədəf auditoriya kimi seçib veb interfeys vasitəsilə test və ya canlı bildiriş göndərə bilərsiniz.

Mövzu abunəliyi nə qədər tez işə başlayır?

Adətən abunəlik bir neçə saniyə ərzində aktivləşir. Bununla belə, nadir hallarda FCM serverlərində məlumat yayılması səbəbindən gecikmə 30–60 saniyəyə çata bilər.

Yekun

  • Topic Subscription — Firebase Cloud Messaging vasitəsilə qrup push bildirişləri mexanizmi.
  • Abunəlik müştəridən subscribeToTopic() (Android) və ya subscribe() (iOS) metodları ilə həyata keçirilir.
  • Bir cihaz eyni anda 2000 mövzuya qədər abunə ola bilər.
  • Server API bir sorğuda 1000 cihazın abunəliklərini idarə etməyə imkan verir.
  • Mövzu ilk abunəlikdə avtomatik yaradılır və ilkin quraşdırma tələb etmir.
  • Böyük auditoriyalarla işləyərkən Topic Subscription fərdi göndərmədən üstündür.
  • Kritik bildirişlər üçün çatdırılma zəmanəti üçün mövzuları fərdi göndərmə ilə birləşdirin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun