Topic Subscription — mekanismo ng Firebase Cloud Messaging na nagbibigay-daan sa pagpapangkat ng mga device ayon sa interes at pagpapadala ng mga notification sa buong kategorya ng mga subscriber. Sa halip na magpadala sa libu-libong indibidwal na Registration Token, sapat na ang magpadala ng isang mensahe sa isang paksa. Ayon sa datos ng Firebase, 2025, ang Topic Subscription ay ginagamit sa mga news app, sports broadcast at marketing campaigns para sa malawakang paghahatid ng notification.
Mga Pangunahing Punto
Topic Subscription — ay isang mekanismo ng group push notification kung saan nag-subscribe ang mga device sa mga pinangalanang channel (paksa) at tumatanggap ng mga mensaheng ipinadala sa mga channel na ito. Ang bawat paksa ay kinikilala ng isang string na pangalan, halimbawa news_sports o weather_alerts.
Kapag nag-subscribe ang isang device sa isang paksa, idinaragdag ng FCM ang Registration Token nito sa listahan ng mga tatanggap ng paksang iyon. Kapag nagpapadala ng mensahe sa isang paksa, awtomatikong iruruta ng FCM ang kopya sa bawat naka-subscribe na device. Firebase ay hindi naglilimita sa bilang ng subscription bawat device — ang app ay maaaring mag-subscribe sa user sa dose-dosenang paksa nang sabay-sabay.
Ang pangunahing bentahe ng mga paksa ay scalability. Para magpadala ng notification sa isang milyong user, sapat na ang isang HTTP request sa FCM na may pangalan ng paksa. Sa indibidwal na pagpapadala, kakailanganin ang isang milyong request o batch sending ng hanggang 500 token sa isang pagkakataon. Pinapasimple rin ng mga paksa ang server-side logic — hindi kailangang mag-imbak ng mga listahan ng token para sa bawat kategorya.
| Parameter | Indibidwal na Pagpapadala | Topic Subscription |
|---|---|---|
| Bilang ng request | Isa bawat token o batch hanggang 500 | Isa bawat paksa |
| Pamamahala ng subscription | Sa server (listahan ng token) | Sa client o server |
| Mga dynamic na grupo | Nangangailangan ng pag-update ng listahan | Awtomatiko sa pamamagitan ng subscription |
| Limitasyon ng tatanggap | Hanggang 500 sa isang request | Walang limitasyon |
Ang Topic Subscription ay malawakang ginagamit sa mga news app para sa pagkakategorya ng nilalaman — ang pag-subscribe sa mga paksang "Sports", "Politika", "Teknolohiya" ay nagbibigay-daan sa paghahatid ng mga kaugnay na notification. Sa e-commerce, ang mga paksa ay ginagamit para sa mga notification tungkol sa mga diskwento sa mga partikular na kategorya ng produkto. Sa mga messenger at social network, ang mga paksa ay ginagamit para sa mga notification tungkol sa mga kaganapan sa mga grupo.
Ang Firebase ay nagpapataw ng mga limitasyon sa pagtatrabaho sa mga paksa. Ang isang app ay maaaring magkaroon ng hanggang 2000 paksa. Bawat device ay maaaring mag-subscribe sa hindi hihigit sa 2000 paksa. Ang dalas ng pag-subscribe/pag-unsubscribe ay limitado rin — hindi hihigit sa 3000 operasyon bawat minuto bawat proyekto. Ang paglampas sa mga limitasyon ay humahantong sa pansamantalang pag-block. Para sa mga proyektong may malaking bilang ng paksa, inirerekomenda ang paggamit ng condition sa halip na paksa — sinusuportahan ng FCM ang mga lohikal na expression para sa pag-target.
Ang proseso ng Topic Subscription ay binubuo ng tatlong yugto: pagsisimula ng subscription sa client, pagpaparehistro sa imprastraktura ng FCM, at kumpirmasyon ng operasyon. Pagkatapos ng matagumpay na subscription, magsisimulang makatanggap ang device ng mga mensaheng ipinadala sa paksang iyon.
Kapag tinawag ng client ang subscribeToTopic() method, ang Firebase SDK ay nagpapadala ng request sa FCM servers. Sinusuri ng server ang pagiging pinapayagan ng operasyon at idinaragdag ang token ng device sa listahan ng mga subscriber ng paksa. FCM ay nagbabalik ng kumpirmasyon ng matagumpay na subscription sa client. Mula sa sandaling iyon, lahat ng mensahe sa paksang ito ay ihahatid sa device.
Ang paksa ay hindi kailangang likhain nang maaga sa Firebase console. Sa unang subscription ng anumang device sa isang paksang pinangalanang news_promo, awtomatiko itong nililikha ng FCM. Kung ang huling device ay mag-unsubscribe, ang paksa ay mananatili sa system ngunit hindi aktibo, at magpapatuloy sa bagong subscription.
Sa Android, ang pag-subscribe at pag-unsubscribe sa mga paksa ay ginagawa sa pamamagitan ng FirebaseMessaging SDK. Ang mga method na subscribeToTopic() at unsubscribeFromTopic() ay tumatanggap ng pangalan ng paksa bilang parameter. Ang mga operasyon ay asynchronous at nangangailangan ng pagproseso ng resulta.
Para mag-subscribe, sapat na ang tumawag ng subscribeToTopic() na may pangalan ng target na paksa. Ang Firebase SDK ay independiyenteng namamahala ng mga network request at pagsubok muli sa mga pagkabigo. Inirerekomenda na mag-subscribe sa mga paksa pagkatapos matanggap ang Registration Token.
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", "Nag-unsubscribe: ${task.isSuccessful}")
}
}
}
Sa mga tunay na app, ang user ay maaaring mag-subscribe sa maraming kategorya. Para sa maginhawang pamamahala, gumawa ng manager class na nag-si-sync ng status ng subscription sa server side. Sa pag-login ng user, ibalik ang kanilang mga subscription mula sa profile.
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")
}
}
Sa iOS, ang proseso ng pag-subscribe sa paksa ay lohikal na kapareho ng Android, ngunit gumagamit ng Swift API ng Firebase Messaging. Ang mga method na subscribe at unsubscribe ay tinatawag sa Messaging instance at asynchronous din.
Para mag-subscribe sa isang paksa sa iOS app, ginagamit ang Messaging.subscribe() method. Mahalagang tawagan ang subscription pagkatapos ng initialization ng Firebase at pagtanggap ng Registration Token. Inirerekomenda ng Apple na humingi ng pahintulot para sa notification bago mag-subscribe sa mga paksa.
import FirebaseMessaging
class PushTopicManager {
func subscribeToTopic(topic: String) {
Messaging.messaging().subscribe(toTopic: topic) { error in
if let error = error {
Log.e("FCM", "Error sa subscription: \(error)")
} else {
Log.d("FCM", "Naka-subscribe sa \(topic)")
}
}
}
func unsubscribeFromTopic(topic: String) {
Messaging.messaging().unsubscribe(fromTopic: topic) { error in
if let error = error {
Log.e("FCM", "Error sa pag-unsubscribe: \(error)")
}
}
}
}
Sa iOS, ang subscription sa paksa ay nakatali rin sa Registration Token na natatanggap ng Firebase mula sa APNs. Kung magbago ang APNs token (halimbawa, pagkatapos ng pag-restore ng device), awtomatikong ililipat ng Firebase ang mga subscription sa bagong token. Gayunpaman, sa mga bihirang kaso, maaaring kailanganin ang muling pag-subscribe pagkatapos ng pag-update ng Registration Token.
Pamamahala ng server ng mga subscription ay nagbibigay-daan sa pag-subscribe at pag-unsubscribe ng mga device nang walang partisipasyon ng client app. Ito ay kapaki-pakinabang para sa administrasyon, A/B testing, at pamamahala ng subscription sa backend side.
Ang Firebase ay nagbibigay ng REST API para sa malawakang pamamahala ng subscription. Ang method na /v1/projects/{project_id}/subscriptions ay nagbibigay-daan sa pag-subscribe ng hanggang 1000 device sa isang request. Ginagamit ng API ang Registration Token ng mga device para sa identipikasyon.
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("Error sa subscription", error)
}
}
Ang pamamahala ng server ng mga subscription ay ginagamit sa ilang senaryo. Sa pagrehistro ng user, awtomatikong ini-subscribe siya ng server sa mga pangunahing paksa. Sa pagbabago ng kagustuhan sa web version, sinasabay ng server ang mga subscription sa mobile device. Mga administrator ay maaaring mag-subscribe ng test device sa mga internal na paksa para sa debugging. Para sa malawakang operasyon, ang FCM ay nagbibigay ng Instance Group method, na nagbibigay-daan sa pamamahala ng subscription ng group ng mga device sa pamamagitan ng isang group identifier.
Ang Firebase ay hindi nagbibigay ng built-in na API para sa pagsusuri ng kasalukuyang subscription ng device. Inirerekomenda sa mga developer na magpanatili ng sariling database ng subscription sa server side. Sa bawat pag-start ng app, isi-sync ng client ang mga subscription nito sa server sa pamamagitan ng pagpapadala ng listahan ng aktibong paksa. Ito ay nagbibigay-daan sa pagtuklas ng desync at pagpapanumbalik ng mga subscription kung kinakailangan. Para sa audit, gamitin ang mga log ng Firebase Cloud Functions — bawat subscribe/unsubscribe operation ay maaaring ma-log.
Mga Madalas Itanong
Ang maximum na bilang ng paksa ay 2000 bawat app. Kung kailangan ng higit pa, isaalang-alang ang paggamit ng Device Groups o indibidwal na pagpapadala ayon sa token.
Ang Firebase ay hindi nagbibigay ng direktang API para makuha ang listahan ng subscription ng device. Inirerekomenda sa mga developer na iimbak ang status ng subscription sa sariling server at i-sync ito sa client.
Ang FCM ay magbabalik ng matagumpay na resulta. Itinuturing ng Firebase ang pag-unsubscribe mula sa hindi umiiral na paksa bilang isang no-op operation — walang error na nalilikha, hindi nagbabago ang status.
Oo, sa Firebase console sa seksyong Cloud Messaging, maaari mong piliin ang paksa bilang target audience at magpadala ng test o production notification sa pamamagitan ng web interface.
Karaniwang nag-a-activate ang subscription sa loob ng ilang segundo. Gayunpaman, sa mga bihirang kaso, ang pagkaantala ay maaaring umabot ng 30–60 segundo dahil sa pagkalat ng impormasyon sa FCM servers.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din