موضوع کی رکنیت 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 initialization اور 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں