विषय सदस्यता Firebase Cloud Messaging की एक क्रियाविधि है जो रुचियों के अनुसार उपकरणों को समूहित करने और ग्राहकों की पूरी श्रेणियों को सूचनाएं भेजने की अनुमति देती है। हजारों अलग-अलग Registration Token पर भेजने के बजाय, एक विषय पर एक संदेश भेजना पर्याप्त है। Firebase, 2025 के अनुसार, विषय सदस्यता का उपयोग समाचार ऐप्स, खेल प्रसारण और विपणन अभियानों में बड़े पैमाने पर सूचना वितरण के लिए किया जाता है।
मुख्य बिंदु
विषय सदस्यता एक समूह पुश सूचना वितरण क्रियाविधि है जिसमें उपकरण नामित चैनलों (विषयों) की सदस्यता लेते हैं और उन चैनलों पर भेजे गए संदेश प्राप्त करते हैं। प्रत्येक विषय की पहचान एक स्ट्रिंग नाम से होती है, जैसे news_sports या weather_alerts।
जब कोई उपकरण किसी विषय की सदस्यता लेता है, FCM उस विषय के प्राप्तकर्ताओं की सूची में उसका Registration Token जोड़ता है। किसी विषय पर संदेश भेजने पर, FCM स्वचालित रूप से प्रत्येक सदस्यता प्राप्त उपकरण को एक प्रति भेजता है। Firebase प्रति उपकरण सदस्यताओं की संख्या को सीमित नहीं करता — एक ऐप उपयोगकर्ता को एक साथ दर्जनों विषयों की सदस्यता दे सकता है।
विषयों का मुख्य लाभ स्केलेबिलिटी है। दस लाख उपयोगकर्ताओं को सूचना भेजने के लिए, विषय नाम के साथ FCM को केवल एक HTTP अनुरोध की आवश्यकता है। व्यक्तिगत भेजने में दस लाख अनुरोध या एक बार में 500 टोकन तक का बैच भेजना लगेगा। विषय सर्वर-साइड लॉजिक को भी सरल बनाते हैं — प्रत्येक श्रेणी के लिए टोकन सूची संग्रहीत करने की आवश्यकता नहीं है।
| पैरामीटर | व्यक्तिगत भेजना | विषय सदस्यता |
|---|---|---|
| अनुरोधों की संख्या | प्रति टोकन एक या 500 तक बैच | प्रति विषय एक |
| सदस्यता प्रबंधन | सर्वर पर (टोकन सूची) | क्लाइंट या सर्वर पर |
| गतिशील समूह | सूची अद्यतन की आवश्यकता | सदस्यता के माध्यम से स्वचालित |
| प्राप्तकर्ता सीमा | प्रति अनुरोध 500 तक | असीमित |
विषय सदस्यता का व्यापक रूप से समाचार ऐप्स में सामग्री वर्गीकरण के लिए उपयोग किया जाता है — “खेल”, “राजनीति”, “प्रौद्योगिकी” विषयों की सदस्यता प्रासंगिक सूचनाएं प्रदान करती है। ई-कॉमर्स में, विषयों का उपयोग उत्पादों की विशिष्ट श्रेणियों में छूट के बारे में सूचनाओं के लिए किया जाता है। मैसेंजर और सोशल नेटवर्क में, विषयों का उपयोग समूहों में घटनाओं के बारे में सूचनाओं के लिए किया जाता है।
Firebase विषयों के साथ काम करने पर प्रतिबंध लगाता है। एक ऐप में अधिकतम 2000 विषय हो सकते हैं। प्रत्येक उपकरण अधिकतम 2000 विषयों की सदस्यता ले सकता है। सदस्यता/सदस्यता रद्द करने की आवृत्ति भी सीमित है — प्रति प्रोजेक्ट प्रति मिनट 3000 से अधिक ऑपरेशन नहीं। इन सीमाओं को पार करने पर अस्थायी अवरोधन होता है। बड़ी संख्या में विषयों वाली परियोजनाओं के लिए, विषयों के बजाय शर्तों (condition) का उपयोग करने की अनुशंसा की जाती है — FCM लक्ष्यीकरण के लिए तार्किक अभिव्यक्तियों का समर्थन करता है।
विषय सदस्यता प्रक्रिया तीन चरणों में होती है: क्लाइंट पर सदस्यता आरंभ करना, FCM बुनियादी ढांचे में पंजीकरण और ऑपरेशन की पुष्टि। सफल सदस्यता के बाद, उपकरण उस विषय पर भेजे गए संदेश प्राप्त करना शुरू कर देता है।
जब क्लाइंट subscribeToTopic() विधि को कॉल करता है, Firebase SDK FCM सर्वरों को एक अनुरोध भेजता है। सर्वर ऑपरेशन की वैधता की जांच करता है और उपकरण टोकन को विषय के ग्राहकों की सूची में जोड़ता है। FCM क्लाइंट को सफल सदस्यता की पुष्टि लौटाता है। इस क्षण से, इस विषय पर सभी संदेश उपकरण को वितरित किए जाएंगे।
Firebase कंसोल में पहले से विषय बनाने की आवश्यकता नहीं है। जब पहला उपकरण news_promo नामक विषय की सदस्यता लेता है, FCM स्वचालित रूप से इसे बनाता है। यदि अंतिम उपकरण सदस्यता रद्द करता है, तो विषय सिस्टम में बना रहता है लेकिन निष्क्रिय हो जाता है, और नई सदस्यता होने पर फिर से काम करना शुरू कर देता है।
Android पर, विषयों की सदस्यता और सदस्यता रद्द करना FirebaseMessaging SDK के माध्यम से किया जाता है। subscribeToTopic() और unsubscribeFromTopic() विधियां पैरामीटर के रूप में विषय का नाम लेती हैं। संचालन अतुल्यकालिक हैं और परिणाम प्रसंस्करण की आवश्यकता है।
सदस्यता लेने के लिए, लक्ष्य विषय नाम के साथ subscribeToTopic() को कॉल करना पर्याप्त है। Firebase SDK स्वचालित रूप से नेटवर्क अनुरोधों और विफलताओं पर पुनः प्रयास का प्रबंधन करता है। सफलतापूर्वक 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", "सदस्यता रद्द: ${task.isSuccessful}")
}
}
}
वास्तविक ऐप्स में, उपयोगकर्ता कई श्रेणियों की सदस्यता ले सकता है। सुविधाजनक प्रबंधन के लिए, एक प्रबंधक वर्ग बनाएं जो सर्वर साइड के साथ सदस्यता स्थिति को सिंक्रनाइज़ करता है। जब उपयोगकर्ता लॉग इन करता है, तो उनके प्रोफ़ाइल से उनकी सदस्यताएं पुनर्स्थापित करें।
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 पर, विषय सदस्यता प्रक्रिया तर्क में Android के समान है लेकिन Swift Firebase Messaging API का उपयोग करती है। subscribe और unsubscribe विधियां Messaging इंस्टेंस पर कॉल की जाती हैं और अतुल्यकालिक भी हैं।
iOS ऐप में किसी विषय की सदस्यता लेने के लिए, Messaging.subscribe() विधि का उपयोग करें। Firebase आरंभीकरण और Registration Token प्राप्त करने के बाद सदस्यता को कॉल करना महत्वपूर्ण है। Apple विषयों की सदस्यता लेने से पहले सूचना अनुमति का अनुरोध करने की अनुशंसा करता है।
import FirebaseMessaging
class PushTopicManager {
func subscribeToTopic(topic: String) {
Messaging.messaging().subscribe(toTopic: topic) { error in
if let error = error {
Log.e("FCM", "सदस्यता त्रुटि: \(error)")
} else {
Log.d("FCM", "सदस्यता ली \(topic)")
}
}
}
func unsubscribeFromTopic(topic: String) {
Messaging.messaging().unsubscribe(fromTopic: topic) { error in
if let error = error {
Log.e("FCM", "सदस्यता रद्द करने में त्रुटि: \(error)")
}
}
}
}
iOS पर, विषय सदस्यता Registration Token से भी जुड़ी होती है जो Firebase APNs से प्राप्त करता है। यदि APNs टोकन बदलता है (उदाहरण के लिए, उपकरण पुनर्स्थापना के बाद), Firebase स्वचालित रूप से सदस्यताओं को नए टोकन पर स्थानांतरित करता है। हालांकि, दुर्लभ मामलों में, Registration Token अपडेट के बाद पुनः सदस्यता की आवश्यकता हो सकती है।
सर्वर-साइड प्रबंधन क्लाइंट ऐप को शामिल किए बिना उपकरणों को सदस्यता देने और सदस्यता रद्द करने की अनुमति देता है। यह प्रशासन, A/B परीक्षण और backend पर सदस्यताओं के प्रबंधन के लिए उपयोगी है।
Firebase सामूहिक सदस्यता प्रबंधन के लिए REST API प्रदान करता है। /v1/projects/{project_id}/subscriptions एंडपॉइंट एक अनुरोध में 1000 उपकरणों तक की सदस्यता की अनुमति देता है। API पहचान के लिए उपकरणों के Registration Token का उपयोग करता है।
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)
}
}
सर्वर-साइड सदस्यता प्रबंधन कई परिदृश्यों में उपयोग किया जाता है। जब उपयोगकर्ता पंजीकरण करता है, सर्वर स्वचालित रूप से उसे बुनियादी विषयों की सदस्यता देता है। जब वेब संस्करण में प्राथमिकताएं बदलती हैं, सर्वर मोबाइल उपकरण पर सदस्यताओं को सिंक्रनाइज़ करता है। प्रशासक डिबगिंग के लिए परीक्षण उपकरणों को आंतरिक विषयों की सदस्यता दे सकते हैं। सामूहिक संचालन के लिए, FCM Instance Group विधि प्रदान करता है, जो एकल समूह पहचानकर्ता के माध्यम से उपकरणों के समूह की सदस्यताओं के प्रबंधन की अनुमति देता है।
Firebase किसी उपकरण की वर्तमान सदस्यताओं की जांच के लिए अंतर्निहित API प्रदान नहीं करता है। डेवलपर्स को सर्वर साइड पर अपना स्वयं का सदस्यता डेटाबेस बनाए रखने की सलाह दी जाती है। प्रत्येक ऐप लॉन्च पर, क्लाइंट सक्रिय विषयों की सूची भेजकर सर्वर के साथ अपनी सदस्यताओं को सिंक्रनाइज़ करता है। यह डीसिंक्रनाइज़ेशन की पहचान करने और यदि आवश्यक हो तो सदस्यताओं को पुनर्स्थापित करने में मदद करता है। ऑडिट के लिए, Firebase Cloud Functions लॉग का उपयोग करें — प्रत्येक subscribe/unsubscribe ऑपरेशन लॉग किया जा सकता है।
अक्सर पूछे जाने वाले प्रश्न
अधिकतम विषय संख्या प्रति ऐप 2000 है। यदि अधिक की आवश्यकता है, तो डिवाइस समूहों या टोकन द्वारा व्यक्तिगत भेजने पर विचार करें।
Firebase उपकरण की सदस्यता सूची प्राप्त करने के लिए सीधा API प्रदान नहीं करता है। डेवलपर्स को अपने स्वयं के सर्वर पर सदस्यता स्थिति संग्रहीत करने और इसे क्लाइंट के साथ सिंक्रनाइज़ करने की अनुशंसा की जाती है।
FCM एक सफल परिणाम लौटाता है। Firebase गैर-मौजूद विषय से सदस्यता रद्द करने को no-op ऑपरेशन के रूप में संभालता है — कोई त्रुटि उत्पन्न नहीं होती, स्थिति नहीं बदलती।
हां, Firebase कंसोल में Cloud Messaging अनुभाग में, आप एक विषय को लक्षित दर्शक के रूप में चुन सकते हैं और वेब इंटरफ़ेस के माध्यम से परीक्षण या उत्पादन सूचना भेज सकते हैं।
आमतौर पर, सदस्यता कुछ सेकंड के भीतर सक्रिय हो जाती है। हालांकि, दुर्लभ मामलों में, FCM सर्वरों पर प्रसार के कारण देरी 30–60 सेकंड तक पहुंच सकती है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें