Firebase Cloud Messaging (FCM) Google کی ایک کراس پلیٹ فارم پش نوٹیفیکیشن اور پیغام رسانی کی خدمت ہے، جو موبائل اور ویب ایپلیکیشنز کے لیے ڈیزائن کی گئی ہے۔ FCM سرور اور کلائنٹ آلات کے درمیان مستقل نیٹ ورک کنکشن برقرار رکھے بغیر قابل بھروسہ ڈیٹا منتقلی کو یقینی بناتا ہے۔ Firebase Documentation, 2026 کے مطابق، FCM انفراسٹرکچر کے ذریعے دنیا بھر میں روزانہ 300 بلین سے زیادہ پیغامات گزرتے ہیں۔ یہ خدمت خودکار نمائش والے نوٹیفیکیشنز اور پس منظر میں ڈیٹا کی منتقلی کے لیے data پیغامات دونوں کو سپورٹ کرتی ہے۔
اہم نکات
Firebase Cloud Messaging Google کی ایک کلاؤڈ سروس ہے جو ایپلیکیشن سرور اور کلائنٹ آلات کے درمیان پش نوٹیفیکیشنز اور data پیغامات کی ترسیل کو یقینی بناتی ہے۔ اس سروس نے پرانی Google Cloud Messaging (GCM) کی جگہ لی اور Firebase ماحولیاتی نظام میں پش ترسیل کے لیے معیاری حل بن گئی۔ FCM Android، iOS، Web اور Unity کو سپورٹ کرتی ہے، ہدف پلیٹ فارم سے آزاد ایک متحد بھیجائی انٹرفیس فراہم کرتی ہے۔
یہ سروس پیغام کی ترسیل کے کئی طریقہ کار فراہم کرتی ہے، ہر ایک مخصوص کام حل کرتا ہے۔ Notification پیغامات وصول ہونے پر سسٹم کے ذریعے خودکار طور پر دکھائے جاتے ہیں — ڈویلپر کو نوٹیفیکیشن دکھانے کے لیے کوڈ لکھنے کی ضرورت نہیں۔ Data پیغامات کلید-قدر جوڑوں کے طور پر صوابدیدی پے لوڈ منتقل کرتے ہیں اور ایپلیکیشن کے اندر کارروائی کی جاتی ہے۔ مشترکہ پیغامات میں زیادہ سے زیادہ لچک کے لیے نظر آنے والے اور پوشیدہ حصے ہوتے ہیں۔
اپنا پش سرور نافذ کرنے کے لیے ہر آلے کے ساتھ مستقل TCP کنکشن برقرار رکھنا ضروری ہے، جو غیر موثر اور غیر محفوظ ہے۔ FCM Google کے متحد انفراسٹرکچر کا استعمال کرتی ہے جو ایک ساتھ اربوں آلات کے ساتھ کنکشن برقرار رکھتا ہے۔ یہ سروس خودکار طور پر ترسیل کی دوبارہ کوششوں، پیغام کی قطاروں اور لوڈ بیلنسنگ کا انتظام کرتی ہے، ڈویلپر کو ان کاموں کو خود حل کرنے کی ضرورت سے آزاد کرتی ہے۔
FCM فن تعمیر تین اہم اجزاء پر مشتمل ہے: فراہم کنندہ سرور (آپ کا بیک اینڈ)، Firebase Cloud Messaging سرور اور آلے پر کلائنٹ ایپلیکیشن۔ جب سرور پیغام بھیجتا ہے، تو یہ پہلے FCM انفراسٹرکچر تک پہنچتا ہے، جو اسے ہدف آلے پر روٹ کرتا ہے۔ اگر آلہ آف لائن ہے، تو FCM پیغام کو ایک قطار میں ذخیرہ کرتا ہے اور کنکشن بحال ہونے پر پہنچاتا ہے۔
پہلی بار لانچ کرنے پر، ایپلیکیشن Firebase SDK کو کال کرتی ہے، جو FCM سروس میں آلہ رجسٹر کرتی ہے اور ایک منفرد Registration Token حاصل کرتی ہے۔ یہ ٹوکن تقریباً 150 حروف کی ایک سٹرنگ ہے اور ایک مخصوص آلے پر ایپلیکیشن کی مخصوص مثال کی شناخت کرتی ہے۔ ایپلیکیشن دوبارہ انسٹال کرنے، ڈیٹا صاف کرنے یا بیک اپ سے بحال کرنے پر ٹوکن تبدیل ہو سکتا ہے — ڈویلپر کو onNewToken ڈیلیگیٹ کے ذریعے ٹوکن اپ ڈیٹ کو ہینڈل کرنا چاہیے۔
جب سرور FCM API کے ذریعے درخواست بھیجتا ہے، تو پیغام کئی مراحل سے گزرتا ہے۔ وصول اور توثیق — FCM درخواست کی درستگی اور ہدف آلے کی موجودگی کی جانچ کرتا ہے۔ قطار — اگر آلہ دستیاب نہیں ہے، تو پیغام اسٹوریج قطار میں داخل ہوتا ہے۔ روٹنگ — FCM بہترین ترسیل کا چینل (WiFi یا موبائل ڈیٹا) طے کرتا ہے۔ ترسیل — سسٹم پیغام کو ہدف ایپلیکیشن تک پہنچاتا ہے۔ کامیاب ترسیل کے بعد، FCM سرور کو پیغام کی شناخت واپس کرتا ہے۔
Firebase Cloud Messaging تین اقسام کے پیغامات کو سپورٹ کرتی ہے، ہر ایک کے کلائنٹ سائیڈ پر اپنی کارروائی کی خصوصیات ہیں۔ Notification پیغامات Android میں Google Play Services اور iOS میں APNs کے ذریعے کارروائی کی جاتی ہے اور خودکار طور پر پش بینرز کے طور پر دکھائے جاتے ہیں۔ Data پیغامات براہ راست ایپلیکیشن کو پہنچائے جاتے ہیں اور Android میں onMessageReceived کال بیک اور iOS میں application(_:didReceiveRemoteNotification:) کے ذریعے کارروائی کی جاتی ہے۔
Notification پیغام میں پہلے سے طے شدہ فیلڈز ہوتے ہیں: عنوان، باڈی، تصویری URL اور نوٹیفیکیشن آواز۔ سسٹم خودکار طور پر نوٹیفیکیشن بنا کر سسٹم ٹرے میں دکھاتا ہے، چاہے ایپلیکیشن پس منظر میں ہو یا بند ہو۔ صارف عنوان اور متن کے ساتھ ایک معیاری بینر دیکھتا ہے، اور ٹیپ کرنے پر ایپلیکیشن پے لوڈ میں بھیجے گئے ڈیٹا کے ساتھ کھلتی ہے۔ اگر ایپلیکیشن فعال ہے، تو notification پیغام کو روکا جا سکتا ہے اور کوڈ میں کارروائی کی جا سکتی ہے۔
Data پیغام پہلے سے طے شدہ فیلڈز کے بغیر کلید-قدر جوڑوں کا ایک حسب ضرورت مجموعہ ہے۔ پے لوڈ سسٹم کے ذریعے خودکار طور پر کارروائی نہیں کی جاتی — ایپلیکیشن خام ڈیٹا حاصل کرتی ہے اور اسے صوابدیدی طریقے سے تشریح کر سکتی ہے۔ Data پیغامات پس منظر میں ڈیٹا سنکرونائزیشن، مقامی کیش اپ ڈیٹ، سنک ٹرگر یا نوٹیفیکیشن دکھائے بغیر کمانڈ بھیجنے کے لیے استعمال ہوتے ہیں۔ Android میں، data پیغام ہمیشہ پہنچایا جاتا ہے، چاہے ایپلیکیشن بند ہو یا پس منظر میں ہو۔
FCM ایک پیغام بھیجنے کی اجازت دیتی ہے جس میں notification حصہ (نمائش کے لیے) اور data حصہ (کارروائی کے لیے) دونوں شامل ہوں۔ مشترکہ پے لوڈ میں پہلے سے طے شدہ notification فیلڈز اور صوابدیدی data کلید دونوں شامل ہوتے ہیں۔ سسٹم notification حصے سے نوٹیفیکیشن دکھاتا ہے، جبکہ data حصہ کھولنے پر ایپلیکیشن کے intent extras میں منتقل ہوتا ہے۔ یہ ان منظرناموں کے لیے مفید ہے جہاں آپ کو صارف کو نوٹیفیکیشن دکھانا ہے اور ساتھ ہی کسی مخصوص اسکرین پر جانے کے لیے سیاق و سباق منتقل کرنا ہے۔
| قسم | خودکار نمائش | پس منظر میں کارروائی | مثال |
|---|---|---|---|
| Notification | ہاں، سسٹم کے ذریعے | خودکار، بغیر کوڈ کے | خوش آمدید پش نوٹیفیکیشن |
| Data | نہیں | ایپلیکیشن کال بیک کے ذریعے | پس منظر میں ڈیٹا سنک |
| مشترکہ | ہاں، notification حصہ | کھولنے پر data حصہ | نوٹیفیکیشن + آرڈر لنک |
Android میں FCM انضمام ایپلیکیشن سطح پر build.gradle فائل کے ذریعے Firebase SDK کو جوڑنے سے شروع ہوتا ہے۔ انحصار اور google-services.json فائل شامل کرنے کے بعد، ایپلیکیشن خودکار طور پر Registration Token حاصل کرتی ہے، جو FirebaseMessagingService کال بیک کے ذریعے منتقل ہوتا ہے۔ نوٹیفیکیشنز وصول کرنے کے لیے، FirebaseMessagingService کو بڑھانے والی سروس بنانا اور اسے AndroidManifest.xml میں رجسٹر کرنا ضروری ہے۔
Firebase SDK جوڑنے کے بعد، آلہ کا ٹوکن اضافی کوڈ کے بغیر خودکار طور پر پیدا ہوتا ہے۔ ٹوکن دستیاب ہے FirebaseMessaging.getInstance().token کے ذریعے، جو Task<String> لوٹاتا ہے۔ ٹوکن اپ ڈیٹس کو ٹریک کرنے کے لیے، سروس میں onNewToken طریقہ کو اوور رائیڈ کیا جاتا ہے۔ ٹوکن فراہم کنندہ سرور کو بھیجنا ضروری ہے تاکہ سرور اس آلے پر پش نوٹیفیکیشن بھیج سکے۔
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "نیا پیغام"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
FCM پیغامات وصول کرنے کے لیے سروس کو مناسب intent-filter کے ساتھ AndroidManifest.xml میں رجسٹر ہونا چاہیے۔ INTERNET اجازت اور مخصوص ایکشن کے ساتھ service ٹیگ شامل کریں۔ سروس رجسٹریشن کے بغیر، پیغامات پس منظر میں ایپلیکیشن کو نہیں پہنچائے جائیں گے۔ Android 13+ میں نوٹیفیکیشن دکھانے کے لیے رن ٹائم اجازت POST_NOTIFICATIONS ضروری ہے۔
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
"android.permission.POST_NOTIFICATIONS" />
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name=
"com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
iOS میں FCM انضمام Apple Push Notification Service (APNs) کی طرف اور Firebase Console دونوں میں ترتیب کی ضرورت ہے۔ Android کے برعکس، جہاں FCM براہ راست کنکشن کا انتظام کرتا ہے، iOS میں FCM APNs کو نقل و حمل کی پرت کے طور پر استعمال کرتا ہے۔ ایپلیکیشن UIApplication.shared.registerForRemoteNotifications کے ذریعے پش نوٹیفیکیشنز کے لیے رجسٹر ہوتی ہے، اور Firebase SDK موصولہ آلہ ٹوکن کو روک کر FCM Registration Token سے منسلک کرتا ہے۔
iOS پر FCM کام کرنے کے لیے، Firebase Console میں APNs کلید یا سرٹیفکیٹ اپ لوڈ کرنا ضروری ہے۔ APNs کلید سرٹیفکیٹ کے بغیر جدید تصدیق کا طریقہ ہے (Apple کی طرف سے تجویز کردہ)۔ کلید Apple Developer Portal میں Keys سیکشن میں بنائی جاتی ہے اور Firebase Console میں Cloud Messaging کی ترتیبات میں اپ لوڈ کی جاتی ہے۔ APNs ترتیب کے بعد، ایپلیکیشن UNUserNotificationCenter کے ذریعے نوٹیفیکیشن کی اجازت درخواست کرتی ہے اور APNs کے ذریعے رجسٹر ہوتی ہے۔
import Firebase
import UserNotifications
class AppDelegate: NSObject, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound, .badge])
application.registerForRemoteNotifications()
return true
}
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
Messaging.messaging()
.apnsToken = deviceToken
}
}
موصولہ نوٹیفیکیشنز کو ہینڈل کرنے کے لیے، UNUserNotificationCenter ڈیلیگیٹ لاگو کیا جاتا ہے۔ willPresent طریقہ اس وقت کال ہوتا ہے جب ایپلیکیشن فعال ہونے پر نوٹیفیکیشن موصول ہو — یہاں آپ حسب ضرورت in-app نوٹیفیکیشن دکھا سکتے ہیں یا سسٹم بینر کو نظر انداز کر سکتے ہیں۔ didReceive طریقہ اس وقت کال ہوتا ہے جب صارف نوٹیفیکیشن پر ٹیپ کرتا ہے — یہاں متعلقہ اسکرین پر جایا جاتا ہے۔ Data پیغامات کے لیے MessagingDelegate استعمال کیا جاتا ہے، جو پس منظر میں FCM پیغام موصول ہونے پر پے لوڈ حاصل کرتا ہے۔
سرور سائیڈ بھیجائی FCM پیغامات کی Firebase Cloud Messaging کے HTTP v1 API یا پرانے Firebase Cloud Messaging API کے ذریعے انجام دی جاتی ہے۔ HTTP v1 API تجویز کردہ طریقہ ہے، Service Account کے ذریعے OAuth 2.0 تصدیق استعمال کرتا ہے اور ترسیل کے تجزیہ اور نوٹیفیکیشنز کی A/B جانچ سمیت تمام جدید FCM صلاحیتوں کو سپورٹ کرتا ہے۔ درخواست POST طریقہ سے endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send پر بھیجی جاتی ہے۔
درخواست کے باڈی میں پیغام کی معلومات کے ساتھ JSON آبجیکٹ ہوتا ہے: target (ٹوکن، موضوع یا شرط)، notification (نمائش کے لیے) اور data (حسب ضرورت پے لوڈ)۔ تصدیق Service Account JSON کلید کے ذریعے ہوتی ہے جو سرور کے ماحولی متغیرات میں لوڈ ہوتی ہے۔ رسائی ٹوکن google-auth-library کے ذریعے پیدا ہوتا ہے۔ Google خودکار تصدیق کے انتظام اور دوبارہ کوششوں کے لیے Firebase Admin SDK استعمال کرنے کی سفارش کرتا ہے۔
const admin = require("firebase-admin")
const serviceAccount = require("./serviceAccountKey.json")
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })
const message = {
token: "device_registration_token",
notification: { title: "20% چھوٹ", body: "آج تمام خدمات پر" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("کامیابی سے بھیجا گیا:", response)
})
.catch(error => {
console.log("بھیجنے میں خرابی:", error)
})
صارفین کے گروپ کو نوٹیفیکیشن بھیجنے کے لیے، FCM موضوع کی رکنیت کو سپورٹ کرتا ہے۔ موضوع (topic) ایک نامی چینل ہے جس کی کلائنٹ ایپلیکیشن FirebaseMessaging.getInstance().subscribeToTopic() کے ذریعے رکنیت لیتی ہے۔ سرور کسی موضوع پر پیغام بھیج سکتا ہے اور یہ تمام رکنیت رکھنے والے آلات کو پہنچایا جائے گا۔ موضوعات نیوز لیٹر، پروموشنل نوٹیفیکیشنز اور واقعہ پر مبنی پش کے لیے موزوں ہیں۔ زیادہ درست تقسیم کے لیے، منطقی آپریٹرز کے ساتھ متعدد موضوعات پر مبنی شرائط استعمال کی جاتی ہیں۔
اکثر پوچھے گئے سوالات
FCM Android پر Google کے اپنے انفراسٹرکچر کے ذریعے کام کرتا ہے، جبکہ iOS میں یہ APNs کو نقل و حمل کے پروٹوکول کے طور پر استعمال کرتا ہے۔ FCM دونوں پلیٹ فارمز کے لیے متحد API، آف لائن پیغامات کا خودکار ذخیرہ اور ترسیل کا تجزیہ فراہم کرتا ہے، جو خالص APNs میں دستیاب نہیں ہے۔
ہاں، Firebase Console میں Cloud Messaging سیکشن کے ذریعے منتخب آلات، موضوعات یا سامعین کے حصوں کو دستی طور پر نوٹیفیکیشن بھیجے جا سکتے ہیں۔ یہ خصوصیت جانچ اور ایک بار کی بھیجائی کے لیے موزوں ہے، لیکن پروڈکشن ایپلیکیشنز کے لیے سرور انضمام کا متبادل نہیں ہے۔
FirebaseMessagingService (Android) میں onNewToken یا MessagingDelegate (iOS) کے ذریعے ٹوکن اپ ڈیٹس کی رکنیت لیں۔ جب ٹوکن تبدیل ہوتا ہے، نیا ٹوکن سرور کو بھیجیں اور پرانا ہٹا دیں۔ سرور کو ڈیٹا بیس اپ ڈیٹ کرنا چاہیے اور پرانے ٹوکن پر بھیجنے کی کوششیں بند کرنی چاہئیں۔
FCM پیغام کو 28 دنوں تک ایک قطار میں ذخیرہ کرتا ہے اور کنکشن بحال ہونے پر پہنچاتا ہے۔ Notification پیغامات کے لیے، ہر کولیپس گروپ میں صرف آخری پیغام کولیپس ہوتا ہے۔ Data پیغامات الگ سے ذخیرہ ہوتے ہیں اور بغیر کولیپس کے بھیجائی کی ترتیب میں پہنچائے جاتے ہیں۔
FCM مکمل طور پر مفت ہے پیغامات کی تعداد پر کسی حد کے بغیر۔ FCM استعمال پر Spark پلان یا Blaze پلان میں کوئی چارج نہیں ہے۔ صرف پے لوڈ سائز پر حدود ہیں: notification پیغامات کے لیے 4 KB تک اور data پیغامات کے لیے 2 KB تک۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں