FCM (Firebase Cloud Messaging) پش نوٹیفیکیشنز کی ترسیل اور سرور اور موبائل ایپلیکیشنز کے درمیان ڈیٹا کی منتقلی کے لیے Google کی کراس پلیٹ فارم سروس ہے۔ یہ ایک واحد API کے ذریعے Android، iOS اور ویب پلیٹ فارمز کو سپورٹ کرتا ہے۔ Firebase دستاویزات کے مطابق، FCM دنیا بھر میں روزانہ 1 بلین سے زیادہ پیغامات پر کارروائی کرتا ہے۔
اہم نکات
Firebase Cloud Messaging (FCM) Google کی ایک کلاؤڈ سروس ہے جو موبائل آلات پر پش نوٹیفیکیشنز اور ڈیٹا پیغامات کی قابل اعتماد ترسیل کو یقینی بناتی ہے۔ پہلے Google Cloud Messaging (GCM) کے نام سے جانا جاتا تھا، FCM Firebase ایکو سسٹم میں کراس پلیٹ فارم نوٹیفیکیشنز کا بنیادی ٹول بن گیا ہے۔
FCM پلیٹ فارم کے لحاظ سے خود بخود بہترین ترسیل کا چینل منتخب کرتا ہے: Android پر یہ اپنا FCM کنکشن استعمال کرتا ہے؛ iOS پر یہ APNS (FCM گیٹ وے کے ذریعے) استعمال کرتا ہے۔ ڈیولپر کو دو مختلف انضمام نافذ کرنے کی ضرورت نہیں ہے — FCM روٹنگ سنبھالتا ہے۔
سروس پیغامات بھیجنے کے لیے ایک متحد REST API اور Admin SDK فراہم کرتی ہے۔ یہ کسی مخصوص وصول کنندہ پلیٹ فارم سے منسلک ہوئے بغیر سرور کی طرف سے نوٹیفیکیشن بھیجنے کی اجازت دیتا ہے۔
FCM ترسیل کے متعدد طریقوں کو سپورٹ کرتا ہے: کسی مخصوص ڈیوائس کو ایک پیغام، موضوع کے مطابق گروپ نشریات، اور شرائط کے مطابق طبقاتی بھیجنا۔ شیڈول بھیجنا اور نوٹیفیکیشن مواد کی A/B جانچ بھی دستیاب ہے۔
FCM آرکیٹیکچر تین اجزاء پر مبنی ہے: کلائنٹ ایپلیکیشن، Firebase Connection Server، اور ایپ سرور۔ کلائنٹ شروع ہونے پر FCM میں رجسٹر ہوتا ہے اور ایک منفرد رجسٹریشن ٹوکن حاصل کرتا ہے — ایک سٹرنگ جو دی گئی ایپلیکیشن کے لیے ڈیوائس کی شناخت کرتی ہے۔
ایپ سرور FCM REST API کو ایک درخواست بھیجتا ہے، جس میں وصول کنندہ ٹوکن یا موضوع بتایا جاتا ہے۔ Firebase Connection Server مستقل XMPP کنکشن یا HTTP درخواست کا استعمال کرتے ہوئے پیغام پہنچاتا ہے۔ اگر ڈیوائس آف لائن ہے، تو پیغام قطار میں لگ جاتا ہے اور کنکشن بحال ہونے پر پہنچایا جاتا ہے۔
FCM ترجیحی قطاروں اور اعترافی طریقہ کار کا استعمال کرتے ہوئے ترسیل کی ضمانت دیتا ہے۔ Android پر، پیغام قطار میں 28 دن تک محفوظ رہتا ہے؛ iOS پر، 4 ہفتوں تک (APNS کے ذریعے)۔ میعاد ختم ہونے کے بعد، پیغام بغیر اطلاع کے حذف کر دیا جاتا ہے۔
رجسٹریشن ٹوکن کئی صورتوں میں تبدیل ہو سکتا ہے: ایپ ڈیٹا بحال کرتے وقت، نئے ورژن میں اپ ڈیٹ کرتے وقت، یا کیشے صاف کرتے وقت۔ ایپ کو ٹوکن اپ ڈیٹس کو سنبھالنے اور سرور کے ساتھ مطابقت پذیر ہونے کے لیے FirebaseMessagingService.onNewToken لاگو کرنا چاہیے۔
FCM دو قسم کے پے لوڈ کو سپورٹ کرتا ہے: notification اور data۔ ہر قسم اس بات کا تعین کرتی ہے کہ وصول کنندہ ڈیوائس پر پیغام کیسے اور کب پروسیس ہوتا ہے۔
| پیرامیٹر | Notification | Data |
|---|---|---|
| خودکار نمائش | ہاں، اگر ایپ بیک گراؤنڈ میں ہے | نہیں، صرف ایپ میں |
| پروسیسنگ | سسٹم/NOS — بیک گراؤنڈ میں؛ ایپ — foreground میں | ہمیشہ ایپ میں (onMessageReceived) |
| زیادہ سے زیادہ سائز | 4 KB | 4 KB |
| کسٹم کیز | پہلے سے طے شدہ فیلڈز تک محدود | کوئی بھی کلید-ویلیو جوڑی |
| CollapseKey درکار ہے | اختیاری | گروپ بندی کے لیے اختیاری |
عملی طور پر، سفارش کی جاتی ہے کہ data پیغامات استعمال کریں جب ایپ کو onMessageReceived میں مکمل نوٹیفیکیشن پروسیسنگ کی ضرورت ہو۔ Notification پیغامات سادہ منظرناموں کے لیے موزوں ہیں جہاں سسٹم ڈسپلے کافی ہو۔
FCM اور APNS دو اہم پش ترسیل خدمات ہیں۔ FCM ایک کراس پلیٹ فارم گیٹ وے کے طور پر کام کرتا ہے، جبکہ APNS صرف Apple ایکو سسٹم کے لیے ہے۔ ان کے اہم فرق آرکیٹیکچر، سرٹیفکیٹ کی ضروریات اور روٹنگ میکانزم میں ہیں۔
FCM اور براہ راست APNS کے درمیان انتخاب پروجیکٹ کے آرکیٹیکچر پر منحصر ہے۔ کراس پلیٹ فارم ایپلیکیشنز کے لیے، FCM بہترین انتخاب ہے۔ صرف iOS پروجیکٹس کے لیے، HTTP/2 API کے ذریعے براہ راست APNS کے ساتھ کام کرنا قابل قبول ہے۔
FCM اس وقت مناسب ہے جب پروجیکٹ ایک ساتھ Android اور iOS دونوں استعمال کرتا ہے، نیز جب Firebase analytics، نوٹیفیکیشنز کی A/B جانچ، یا سرور منطق کے بغیر موضوعات کی ضرورت ہو۔ براہ راست APNS کم سے کم انحصار اور سخت ترسیل میں تاخیر کی ضروریات والی صرف iOS ایپلیکیشنز کے لیے ترجیح دی جاتی ہے۔
FCM کو Android ایپلیکیشن سے جوڑنے کے لیے، آپ کو Firebase SDK شامل کرنا ہوگا اور پروجیکٹ روٹ میں google-services.json ترتیب دینا ہوگا۔ ٹوکن رجسٹریشن کے بعد، ایپلیکیشن FirebaseMessagingService کے ذریعے پیغامات وصول کرنے کے لیے تیار ہے۔
// build.gradle (Module)
dependencies {
implementation("com.google.firebase:firebase-messaging:24.1.0")
}
// AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
message.notification?.let {
showNotification(it.title, it.body)
}
}
}
سیٹ اپ کے بعد، ایپلیکیشن پہلے لانچ پر خود بخود ایک FCM ٹوکن حاصل کرتی ہے۔ اس ڈیوائس پر بعد میں نوٹیفیکیشن کی ترسیل کے لیے ٹوکن کو ایپ سرور پر بھیجنا ضروری ہے۔
Android 8+ پر، خودکار نمائش کے ساتھ FCM نوٹیفیکیشن بھیجنے سے پہلے، ایک NotificationChannel بنانا ضروری ہے۔ FCM notification پیغامات ڈیفالٹ چینل ID استعمال کرتے ہیں، لیکن پہلا پیغام وصول کرتے وقت FirebaseMessagingService کے ذریعے ایک کسٹم چینل بنانے کی سفارش کی جاتی ہے۔ Data پیغامات کو چینل کی ضرورت نہیں ہے — ایپ خود فیصلہ کرتی ہے کہ نوٹیفیکیشن کیسے اور کب دکھانا ہے۔
iOS پر، FCM ایپ سرور اور APNS کے درمیان ایک درمیانی کے طور پر کام کرتا ہے۔ Firebase سرور سے پیغام وصول کرتا ہے، اسے APNS فارمیٹ میں لپیٹتا ہے اور Apple گیٹ وے کے ذریعے بھیجتا ہے۔ ڈیولپر کو Firebase کنسول میں APNS کلید یا سرٹیفکیٹ ترتیب دینے کی ضرورت ہے۔
import FirebaseMessaging
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current().delegate = self
Messaging.messaging().delegate = self
return true
}
}
extension AppDelegate: MessagingDelegate {
func messaging(
_ messaging: Messaging,
didReceiveRegistrationToken fcmToken: String?
) {
UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
}
}
iOS پر، APNS رجسٹریشن غیر متزامن طور پر ہوتی ہے۔ FCM SDK خود بخود APNS ٹوکن حاصل کرتا ہے اور اسے Firebase سرور کو بھیجتا ہے۔ didReceiveRegistrationToken ایک نیا FCM ٹوکن موصول ہونے پر فعال ہوتا ہے، جو APNS ٹوکن کو پروجیکٹ شناخت کنندہ کے ساتھ جوڑتا ہے۔
FCM ترسیل کی نگرانی کے لیے Firebase کنسول فراہم کرتا ہے: بھیجے گئے، موصول اور دکھائے گئے نوٹیفیکیشنز کی تعداد۔ سرور کی طرف ترسیل کی غلطیوں کو ٹریک کرنے کے لیے Firebase Cloud Functions کے ذریعے ایک حیثیت کال بیک بھی دستیاب ہے۔ اہم میٹرکس: نوٹیفیکیشن کے امپریشنز اور اوپن۔
FCM کے ساتھ کام کرتے وقت، ہر منظر نامے کے لیے صحیح پیغام کی قسم کا انتخاب کرنا ضروری ہے۔ خودکار نمائش والے سادہ نوٹیفیکیشنز کے لیے، notification پیغامات استعمال کریں۔ ایسے معاملات میں جہاں ایپ کو ڈسپلے کرنے سے پہلے ڈیٹا پروسیس کرنے کی ضرورت ہے، data پیغامات استعمال کریں۔ مخلوط قسم (notification + data) صرف اس وقت تجویز کی جاتی ہے جب ڈیٹا تجزیہ کے لیے درکار ہو نہ کہ نوٹیفیکیشن کا مواد تبدیل کرنے کے لیے۔
ٹوکنز کو مرکزی طور پر منظم کریں۔ موجودہ ٹوکنز کو سرور پر صارف اور پلیٹ فارم سے منسلک ایک ٹیبل میں محفوظ کریں۔ ایک پرانے ٹوکن صفائی میکانزم نافذ کریں: NotRegistered یا InvalidRegistration کی غلطی ملنے پر، ٹوکن کو ڈیٹا بیس سے حذف کریں۔ ٹوکن شاذ و نادر ہی تبدیل ہوتے ہیں، لیکن ان کی صفائی FCM سپورٹ کا ایک لازمی عنصر ہے۔
پیغامات کو گروپ کرنے کے لیے کولیپس کیز (collapseKey) استعمال کریں۔ اگر آپ ایک ہی قسم کے متعدد نوٹیفیکیشن بھیج رہے ہیں (مثال کے طور پر، "شرح مبادلہ اپ ڈیٹ")، تو ایک ہی collapseKey سیٹ کریں۔ FCM گروپ سے صرف آخری پیغام پہنچائے گا، جس سے ڈیوائس کا بوجھ کم ہوگا اور صارف کو نوٹیفیکیشنز کے سیلاب سے بچایا جائے گا۔
Firebase Console اور Cloud Functions کے ذریعے ترسیل کی نگرانی کریں۔ FCM تجزیہ بھیجے گئے، موصول اور دکھائے گئے نوٹیفیکیشنز کی تعداد دکھاتا ہے۔ اگر ڈسپلے کی شرح 70% سے کم ہے، تو Android پر چینل کی ترتیبات اور iOS پر اجازت کی ترتیبات چیک کریں۔ کم ترسیل اکثر غیر فعال چینلز یا نوٹیفیکیشن پابندیوں سے منسلک ہوتی ہے۔ پانچواں: نوٹیفیکیشن کے متن اور بھیجنے کے وقت کو بہتر بنانے کے لیے Firebase A/B ٹیسٹنگ استعمال کریں — یہ Firebase ڈیٹا کے مطابق کھلنے کی شرح کو 15–25% تک بڑھاتا ہے۔
اکثر پوچھے گئے سوالات
FCM، GCM (Google Cloud Messaging) کا ارتقائی اپ ڈیٹ ہے۔ FCM Firebase Console کے ذریعے آسان سیٹ اپ، بلٹ ان analytics، موضوعات اور Web Push سپورٹ فراہم کرتا ہے۔ GCM کو اپریل 2019 میں باضابطہ طور پر بند کر دیا گیا تھا، تمام پروجیکٹس کو FCM میں منتقل کیا جانا چاہیے۔
Firebase Cloud Messaging ایک مفت سروس ہے جس میں پیغامات کی تعداد پر کوئی حد نہیں ہے۔ ادائیگی صرف دیگر Firebase سروسز جیسے Cloud Functions یا Firestore کے استعمال کے لیے لی جاتی ہے۔ بنیادی نوٹیفیکیشن کی ترسیل کے لیے FCM کو Spark یا Blaze سبسکرپشن کی ضرورت نہیں ہے۔
FCM ٹوکن اس وقت تبدیل ہوتا ہے جب: بیک اپ سے ایپ بحال کرنا، ایپ ڈیٹا صاف کرنا، دوبارہ انسٹال کرنا، تبدیل شدہ Sender ID کے ساتھ نئے ورژن میں اپ ڈیٹ کرنا۔ نیا ٹوکن سرور کو بھیجنے کے لیے FirebaseMessagingService میں ہمیشہ onNewToken کو ہینڈل کریں۔
Google FCM چین میں مسدود ہے۔ چین میں نوٹیفیکیشن کی ترسیل کے لیے متبادل خدمات استعمال کی جاتی ہیں: Huawei Push Kit، MiPush (Xiaomi)، Oppo Push، Vivo Push۔ کراس پلیٹ فارم ترسیل کے لیے، Getui جیسی ملٹی پرووائیڈر خدمات استعمال کی جاتی ہیں۔
بلٹ ان Firebase کنسول استعمال کریں: "Cloud Messaging" — "Send Test Message" منتخب کریں۔ ایک ٹیسٹ ٹوکن درج کریں اور ایک notification پیغام بھیجیں۔ نوٹیفیکیشن ڈیوائس پر ظاہر ہونا چاہیے۔ آپ FirebaseMessagingService.onMessageReceived لاگز بھی مانیٹر کر سکتے ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں