Firebase Cloud Messaging (FCM) হলো Google-এর একটি ক্রস-প্ল্যাটফর্ম push বিজ্ঞপ্তি এবং বার্তা বিতরণ পরিষেবা, যা মোবাইল এবং ওয়েব অ্যাপ্লিকেশনের জন্য ডিজাইন করা হয়েছে। FCM সার্ভার এবং ক্লায়েন্ট ডিভাইসের মধ্যে স্থায়ী নেটওয়ার্ক সংযোগ বজায় না রেখেই নির্ভরযোগ্য ডেটা স্থানান্তর নিশ্চিত করে। Firebase Documentation, 2026 অনুসারে, FCM পরিকাঠামোর মাধ্যমে সারা বিশ্বে প্রতিদিন 300 বিলিয়নের বেশি বার্তা যায়। পরিষেবাটি স্বয়ংক্রিয় প্রদর্শন সহ বিজ্ঞপ্তি এবং পটভূমিতে ডেটা স্থানান্তরের জন্য data বার্তা উভয়ই সমর্থন করে।
মূল পয়েন্ট
Firebase Cloud Messaging হলো Google-এর একটি ক্লাউড পরিষেবা যা অ্যাপ্লিকেশন সার্ভার এবং ক্লায়েন্ট ডিভাইসের মধ্যে push বিজ্ঞপ্তি এবং data বার্তা বিতরণ নিশ্চিত করে। পরিষেবাটি পুরানো Google Cloud Messaging (GCM) প্রতিস্থাপন করেছে এবং Firebase ইকোসিস্টেমে push বিতরণের জন্য মানক সমাধানে পরিণত হয়েছে। FCM Android, iOS, Web এবং Unity সমর্থন করে, লক্ষ্য প্ল্যাটফর্ম নির্বিশেষে একীভূত প্রেরণ ইন্টারফেস প্রদান করে।
পরিষেবাটি বার্তা বিতরণের জন্য বেশ কয়েকটি পদ্ধতি প্রদান করে, প্রতিটি নির্দিষ্ট কাজ সমাধান করে। Notification বার্তা প্রাপ্তির পর সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে প্রদর্শিত হয় — ডেভেলপারকে বিজ্ঞপ্তি দেখানোর জন্য কোড লিখতে হয় না। Data বার্তা কী-মান জোড়া হিসাবে নির্বিচারে payload স্থানান্তর করে এবং অ্যাপ্লিকেশনের ভিতরে প্রক্রিয়া করা হয়। সম্মিলিত বার্তাগুলিতে সর্বাধিক নমনীয়তার জন্য দৃশ্যমান এবং লুকানো অংশ থাকে।
নিজস্ব push সার্ভার বাস্তবায়নের জন্য প্রতিটি ডিভাইসের সাথে স্থায়ী 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 দ্বারা প্রক্রিয়া করা হয় এবং স্বয়ংক্রিয়ভাবে push ব্যানার হিসাবে প্রদর্শিত হয়। Data বার্তা সরাসরি অ্যাপ্লিকেশনে বিতরণ করা হয় এবং Android-এ onMessageReceived কলব্যাক এবং iOS-এ application(_:didReceiveRemoteNotification:) এর মাধ্যমে প্রক্রিয়া করা হয়।
Notification বার্তায় পূর্বনির্ধারিত ফিল্ড থাকে: title, body, ইমেজ URL এবং বিজ্ঞপ্তি শব্দ। সিস্টেম স্বয়ংক্রিয়ভাবে বিজ্ঞপ্তি তৈরি এবং প্রদর্শন করে, এমনকি অ্যাপ্লিকেশন পটভূমিতে বা বন্ধ থাকলেও। ব্যবহারকারী শিরোনাম এবং পাঠ্য সহ একটি মানক ব্যানার দেখে এবং ট্যাপ করলে, অ্যাপ্লিকেশন payload-এ পাঠানো ডেটা সহ খোলে। অ্যাপ্লিকেশন সক্রিয় থাকলে, notification বার্তা আটকানো এবং কোডে প্রক্রিয়া করা যেতে পারে।
Data বার্তা পূর্বনির্ধারিত ফিল্ড ছাড়া কী-মান জোড়ার একটি কাস্টম সেট। Payload সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে প্রক্রিয়া করা হয় না — অ্যাপ্লিকেশন কাঁচা ডেটা পায় এবং এটি নির্বিচারে ব্যাখ্যা করতে পারে। Data বার্তা পটভূমিতে ডেটা সিঙ্ক্রোনাইজেশন, স্থানীয় ক্যাশ আপডেট, সিঙ্ক ট্রিগার বা বিজ্ঞপ্তি না দেখিয়ে কমান্ড পাঠানোর জন্য ব্যবহৃত হয়। Android-এ, data বার্তা সর্বদা বিতরণ করা হয়, এমনকি অ্যাপ্লিকেশন বন্ধ বা পটভূমিতে থাকলেও।
FCM একটি বার্তা পাঠানোর অনুমতি দেয় যাতে একটি notification অংশ (প্রদর্শনের জন্য) এবং একটি data অংশ (প্রক্রিয়াকরণের জন্য) উভয়ই থাকে। সম্মিলিত payload পূর্বনির্ধারিত notification ফিল্ড এবং নির্বিচারে data কী উভয়ই অন্তর্ভুক্ত করে। সিস্টেম notification অংশ থেকে বিজ্ঞপ্তি প্রদর্শন করে, যখন data অংশ খোলার সময় অ্যাপ্লিকেশনের intent extras-এ প্রেরণ করা হয়। এটি এমন পরিস্থিতিতে সুবিধাজনক যেখানে ব্যবহারকারীকে একটি বিজ্ঞপ্তি দেখাতে হবে এবং একই সাথে নির্দিষ্ট স্ক্রিনে নেভিগেট করার জন্য প্রসঙ্গ পাঠাতে হবে।
| ধরন | স্বয়ংক্রিয় প্রদর্শন | পটভূমি প্রক্রিয়াকরণ | উদাহরণ |
|---|---|---|---|
| Notification | হ্যাঁ, সিস্টেম দ্বারা | স্বয়ংক্রিয়, কোড ছাড়া | স্বাগত push বিজ্ঞপ্তি |
| 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 পদ্ধতি ওভাররাইড করা হয়। টোকেন প্রদানকারী সার্ভারে পাঠানো আবশ্যক যাতে সার্ভার এই ডিভাইসে push বিজ্ঞপ্তি পাঠাতে পারে।
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-এর মাধ্যমে push বিজ্ঞপ্তির জন্য নিবন্ধন করে এবং 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 পদ্ধতি কল করা হয় যখন অ্যাপ্লিকেশন সক্রিয় থাকাকালীন একটি বিজ্ঞপ্তি পাওয়া যায় — এখানে আপনি কাস্টম ইন-অ্যাপ বিজ্ঞপ্তি দেখাতে বা সিস্টেম ব্যানার উপেক্ষা করতে পারেন। didReceive পদ্ধতি কল করা হয় যখন ব্যবহারকারী বিজ্ঞপ্তিতে ট্যাপ করে — এখানে সংশ্লিষ্ট স্ক্রিনে নেভিগেট করা হয়। Data বার্তার জন্য MessagingDelegate ব্যবহার করা হয়, যা পটভূমিতে FCM বার্তা প্রাপ্ত হলে payload পায়।
সার্ভার-সাইড প্রেরণ 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 (কাস্টম payload)। প্রমাণীকরণ 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: "২০% ছাড়", 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()-এর মাধ্যমে সাবস্ক্রাইব করে। সার্ভার একটি টপিকে বার্তা পাঠাতে পারে এবং এটি সমস্ত সাবস্ক্রাইব করা ডিভাইসে বিতরণ করা হবে। টপিকগুলি নিউজলেটার, প্রচারমূলক বিজ্ঞপ্তি এবং ইভেন্ট-ভিত্তিক push-এর জন্য উপযুক্ত। আরও সুনির্দিষ্ট বিভাজনের জন্য, লজিক্যাল অপারেটর সহ একাধিক টপিকের ভিত্তিতে শর্ত ব্যবহার করা হয়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
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 প্ল্যানের অধীনে কোনো চার্জ নেই। শুধুমাত্র payload আকারের সীমা রয়েছে: notification বার্তার জন্য 4 KB পর্যন্ত এবং data বার্তার জন্য 2 KB পর্যন্ত।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন