Push-bildirishnomalarda Topic Subscription — bu nima, qanday ishlaydi va sozlanadi

Muallif: IT Sectr Nashr etilgan: 2026-03-21 O'qish vaqti: 8 daq

Topic Subscription — Firebase Cloud Messaging mexanizmi bo'lib, u qurilmalarni qiziqishlariga ko'ra guruhlash va butun obunachilar toifalariga bildirishnomalar yuborish imkonini beradi. Minglab alohida Registration Token-ga yuborish o'rniga, bitta mavzuga bitta xabar yuborish kifoya. Firebase, 2025 ma'lumotlariga ko'ra, Topic Subscription yangilik ilovalarida, sport translatsiyalarida va marketing kampaniyalarida bildirishnomalarni ommaviy yetkazish uchun ishlatiladi.

Asosiy ma'lumotlar

  • Topic Subscription — guruh bildirishnomalarini olish uchun qurilmaning FCM tematik kanaliga obuna bo'lishi.
  • Bitta qurilma cheksiz miqdordagi mavzularga obuna bo'lishi mumkin.
  • Obuna mijoz va server tomondan FCM HTTP API orqali boshqariladi.
  • Mavzu birinchi obunada avtomatik yaratiladi — oldindan sozlash talab qilinmaydi.
  • Mavzuga yuborish uchun tokenlar ro'yxati o'rniga uning nomini ko'rsatish kifoya.

FCM-da Topic Subscription nima

Topic Subscription — qurilmalar nomlangan kanallarga (mavzularga) obuna bo'ladigan va shu kanallarga yuborilgan xabarlarni oladigan guruhli push-bildirishnoma mexanizmi. Har bir mavzu satr nomi bilan aniqlanadi, masalan news_sports yoki weather_alerts.

Mavzularning ishlash prinsipi

Qurilma mavzuga obuna bo'lganda, FCM uning Registration Token-ni shu mavzuning qabul qiluvchilar ro'yxatiga qo'shadi. Mavzuga xabar yuborilganda, FCM avtomatik ravishda har bir obuna qilingan qurilmaga nusxasini yetkazadi. Firebase bitta qurilmadagi obunalar sonini cheklamaydi — ilova foydalanuvchini bir vaqtning o'zida o'nlab mavzularga obuna qilishi mumkin.

Mavzular individual yuborishga qarshi

Mavzularning asosiy afzalligi — masshtablashuvchanlik. Bir million foydalanuvchiga bildirishnoma yuborish uchun FCM-ga mavzu nomi bilan bitta HTTP so'rovi kifoya. Individual yuborishda bir million so'rov yoki har safar 500 token-gacha guruhli yuborish talab qilinadi. Mavzular, shuningdek, server qismining mantig'ini soddalashtiradi — har bir toifa uchun tokenlar ro'yxatini saqlash shart emas.

ParametrIndividual yuborishTopic Subscription
So'rovlar soniHar bir token uchun bitta yoki guruhli 500-gachaHar bir mavzu uchun bitta
Obuna boshqaruviServerda (tokenlar ro'yxati)Mijoz yoki serverda
Dinamik guruhlarRo'yxatni yangilash talab qiladiObuna orqali avtomatik
Qabul qiluvchilar chegarasiBitta so'rovda 500-gachaCheksiz

Mavzulardan foydalanish misollari

Topic Subscription kontentni kategorizatsiya qilish uchun yangilik ilovalarida keng qo'llaniladi — "Sport", "Siyosat", "Texnologiyalar" mavzulariga obuna bo'lish tegishli bildirishnomalarni yetkazish imkonini beradi. E-commerce-da mavzular ma'lum mahsulot toifalaridagi chegirmalar haqida bildirishnomalar uchun ishlatiladi. Messenjerlarda va ijtimoiy tarmoqlarda mavzular guruhlardagi voqealar haqida xabarlar uchun qo'llaniladi.

FCM cheklovlari va limitlari

Firebase mavzular bilan ishlashda cheklovlar o'rnatadi. Bitta ilova 2000 tagacha mavzuga ega bo'lishi mumkin. Har bir qurilma 2000 dan ko'p bo'lmagan mavzuga obuna bo'lishi mumkin. Obuna/obunani bekor qilish chastotasi ham cheklangan — loyiha uchun daqiqada 3000 dan ortiq bo'lmagan operatsiya. Limitlardan oshib ketish vaqtinchalik blokirovkaga olib keladi. Ko'p sonli mavzulari bo'lgan loyihalar uchun mavzu o'rniga shart (condition) ishlatish tavsiya etiladi — FCM nishonga olish uchun mantiqiy ifodalarni qo'llab-quvvatlaydi.

Mavzuga obuna qanday ishlaydi

Topic Subscription jarayoni uch bosqichdan iborat: mijozda obunani boshlash, FCM infratuzilmasida ro'yxatdan o'tish va operatsiyani tasdiqlash. Muvaffaqiyatli obunadan so'ng, qurilma shu mavzuga yuborilgan xabarlarni qabul qila boshlaydi.

Obunaning hayotiy sikli

Mijoz subscribeToTopic() metodini chaqirganda, Firebase SDK FCM serverlariga so'rov yuboradi. Server operatsiyaning ruxsat etilganligini tekshiradi va qurilma tokenini mavzu obunachilari ro'yxatiga qo'shadi. FCM mijozga muvaffaqiyatli obuna haqida tasdiq qaytaradi. Shu paytdan boshlab, ushbu mavzuga barcha xabarlar qurilmaga yetkaziladi.

Mavzuning avtomatik yaratilishi

Mavzuni Firebase konsolida oldindan yaratish shart emas. Har qanday qurilma news_promo nomli mavzuga birinchi marta obuna bo'lganda, FCM uni avtomatik yaratadi. Agar oxirgi qurilma obunani bekor qilsa, mavzu tizimda qoladi, lekin faol bo'lmaydi va yangi obuna bilan ishni tiklaydi.

Android-da mavzuga obuna

Android-da mavzularga obuna va obunani bekor qilish FirebaseMessaging SDK orqali amalga oshiriladi. subscribeToTopic() va unsubscribeFromTopic() metodlari parametr sifatida mavzu nomini qabul qiladi. Operatsiyalar asinxrondir va natijani qayta ishlashni talab qiladi.

Mavzuga asosiy obuna

Obuna bo'lish uchun maqsadli mavzu nomi bilan subscribeToTopic() chaqirish kifoya. Firebase SDK tarmoq so'rovlarini va nosozliklarda qayta urinishlarni mustaqil boshqaradi. Registration Token muvaffaqiyatli olingandan so'ng mavzularga obuna bo'lish tavsiya etiladi.

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

Ko'p sonli obunalarni boshqarish

Haqiqiy ilovalarda foydalanuvchi bir nechta toifalarga obuna bo'lishi mumkin. Qulay boshqarish uchun obuna holatini server qismi bilan sinxronlashtiradigan boshqaruvchi sinf yarating. Foydalanuvchi tizimga kirganda, uning obunalarini profildan tiklang.

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 mavzuga obuna

iOS-da mavzuga obuna jarayoni mantiqan Android bilan bir xil, lekin Firebase Messaging-ning Swift API-sidan foydalanadi. subscribe va unsubscribe metodlari Messaging instansiyasida chaqiriladi va ular ham asinxrondir.

iOS-da obunani amalga oshirish

iOS ilovasida mavzuga obuna bo'lish uchun Messaging.subscribe() metodidan foydalaniladi. Obunani Firebase ishga tushirilgandan va Registration Token olingandan so'ng chaqirish muhimdir. Apple mavzularga obuna bo'lishdan oldin bildirishnomalar uchun ruxsat so'rashni tavsiya qiladi.

swift
import FirebaseMessaging

class PushTopicManager {

    func subscribeToTopic(topic: String) {
        Messaging.messaging().subscribe(toTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Obuna xatosi: \(error)")
            } else {
                Log.d("FCM", "Obuna bo'lingan: \(topic)")
            }
        }
    }

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

iOS obunalarining xususiyatlari

iOS-da mavzuga obuna ham Firebase APNs-dan oladigan Registration Token bilan bog'lanadi. Agar APNs tokeni o'zgarsa (masalan, qurilma tiklangandan so'ng), Firebase avtomatik ravishda obunalarni yangi tokenga o'tkazadi. Biroq, kamdan-kam hollarda Registration Token yangilangandan so'ng qayta obuna talab qilinishi mumkin.

Obunalarni serverdan boshqarish

Server boshqaruvi obunalarni mijoz ilovasi ishtirokisiz qurilmalarni obuna qilish va obunani bekor qilish imkonini beradi. Bu administratsiya, A/B testlash va backend tomonda obunalarni boshqarish uchun foydalidir.

Obunalarni boshqarish uchun FCM HTTP API

Firebase ommaviy obuna boshqaruvi uchun REST API taqdim etadi. /v1/projects/{project_id}/subscriptions metodi bitta so'rovda 1000 tagacha qurilmani obuna qilish imkonini beradi. API identifikatsiya uchun qurilmalarning Registration Token-laridan foydalanadi.

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

Server boshqaruvidan foydalanish stsenariylari

Server tomonidan obuna boshqaruvi bir nechta stsenariylarda qo'llaniladi. Foydalanuvchi ro'yxatdan o'tishda server uni avtomatik ravishda asosiy mavzularga obuna qiladi. Veb versiyada sozlamalar o'zgarganda server mobil qurilmadagi obunalarni sinxronlashtiradi. Administratorlar disk raskadrovka uchun test qurilmalarini ichki mavzularga obuna qilishi mumkin. Ommaviy operatsiyalar uchun FCM Instance Group metodini taqdim etadi, bu bir guruh identifikatori orqali qurilmalar guruhining obunalarini boshqarish imkonini beradi.

Obuna holatini kuzatish

Firebase qurilmaning joriy obunalarini tekshirish uchun o'rnatilgan API taqdim etmaydi. Dasturchilarga o'z server tomonida obuna bazasini yuritish tavsiya etiladi. Ilovaning har bir ishga tushishida mijoz faol mavzular ro'yxatini yuborib, obunalarini server bilan sinxronlashtiradi. Bu desinxronizatsiyani aniqlash va kerak bo'lganda obunalarni tiklash imkonini beradi. Audit uchun Firebase Cloud Functions jurnallaridan foydalaning — har bir subscribe/unsubscribe operatsiyasi qayd etilishi mumkin.

Tez-tez beriladigan savollar

Bitta Firebase loyihasida nechta mavzu yaratish mumkin?

Maksimal mavzular soni — bitta ilova uchun 2000. Agar ko'proq kerak bo'lsa, Device Groups (qurilmalar guruhi) yoki tokenlar bo'yicha individual yuborishni ko'rib chiqing.

Qurilma qaysi mavzularga obuna bo'lganini qanday bilish mumkin?

Firebase qurilmaning obuna ro'yxatini olish uchun to'g'ridan-to'g'ri API taqdim etmaydi. Dasturchilarga obuna holatini o'z serverida saqlash va uni mijoz bilan sinxronlashtirish tavsiya etiladi.

Mavjud bo'lmagan mavzudan obunani bekor qilganda nima bo'ladi?

FCM muvaffaqiyatli natija qaytaradi. Firebase mavjud bo'lmagan mavzudan obunani bekor qilishni no-op operatsiyasi sifatida qayta ishlaydi — hech qanday xato yuzaga kelmaydi, holat o'zgarmaydi.

Firebase konsolidan mavzuga bildirishnoma yuborish mumkinmi?

Ha, Firebase konsolida Cloud Messaging bo'limida mavzuni maqsadli auditoriya sifatida tanlab, veb interfeys orqali test yoki jonli bildirishnoma yuborishingiz mumkin.

Mavzuga obuna qanchalik tez ishlay boshlaydi?

Odatda obuna bir necha soniya ichida faollashadi. Biroq, kamdan-kam hollarda FCM serverlarida ma'lumot tarqalishi sababli kechikish 30–60 soniyagacha yetishi mumkin.

Yakuniy xulosa

  • Topic Subscription — Firebase Cloud Messaging orqali guruhli push-bildirishnomalar mexanizmi.
  • Obuna mijozdan subscribeToTopic() (Android) yoki subscribe() (iOS) metodlari bilan amalga oshiriladi.
  • Bitta qurilma bir vaqtning o'zida 2000 tagacha mavzuga obuna bo'lishi mumkin.
  • Server API bitta so'rovda 1000 tagacha qurilmaning obunalarini boshqarish imkonini beradi.
  • Mavzu birinchi obunada avtomatik yaratiladi va oldindan sozlashni talab qilmaydi.
  • Katta auditoriyalar bilan ishlashda Topic Subscription individual yuborishdan afzal.
  • Muhim bildirishnomalar uchun yetkazib berish kafolati uchun mavzularni individual yuborish bilan birlashtiring.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing