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 — ব্যাকগ্রাউন্ডে; অ্যাপ — ফোরগ্রাউন্ডে | সর্বদা অ্যাপে (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 পরীক্ষা, বা সার্ভার লজিক ছাড়া বিষয়ের প্রয়োজন হয়। সরাসরি APBS ন্যূনতম নির্ভরতা এবং কঠোর বিতরণ বিলম্ব প্রয়োজনীয়তা সহ শুধুমাত্র iOS অ্যাপ্লিকেশনের জন্য পছন্দনীয়।
Android অ্যাপ্লিকেশনে FCM সংযোগ করতে, আপনাকে 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-এর মাধ্যমে সরলীকৃত সেটআপ, অন্তর্নির্মিত বিশ্লেষণ, বিষয় এবং 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন