পুশ নোটিফিকেশন হল অ্যাপ ইনস্টল করার পর ব্যবহারকারীর সাথে যোগাযোগের সবচেয়ে কার্যকর উপায়গুলির মধ্যে একটি। এগুলি নতুন বার্তা, ডিসকাউন্ট, কন্টেন্ট আপডেট সম্পর্কে জানাতে বা পরিত্যক্ত কার্টের কথা মনে করিয়ে দিতে দেয়। পুশ নোটিফিকেশন (push notifications) ক্লাউড সার্ভিসের মাধ্যমে কাজ করে: Android-এ Firebase Cloud Messaging (FCM) এবং iOS-এ Apple Push Notification Service (APNS)। এই নিবন্ধে আমরা নোটিফিকেশনের আর্কিটেকচার, তাদের প্রকার এবং উভয় প্ল্যাটফর্মের জন্য সেটআপ প্রক্রিয়া বিশ্লেষণ করব। আরও জানতে — অফিসিয়াল FCM ডকুমেন্টেশন দেখুন।
মূল পয়েন্ট
পুশ নোটিফিকেশন হল একটি বার্তা যা সার্ভার অ্যাপের অনুরোধ ছাড়াই মোবাইল ডিভাইসে পাঠায়। বার্তাটি একটি ক্লাউড সার্ভিসের (FCM বা APNS) মাধ্যমে যায়, যা অ্যাপ বন্ধ থাকলেও এটি ডিভাইসে পৌঁছে দেয়। নোটিফিকেশন দুটি প্রকারে বিভক্ত: ডিসপ্লে নোটিফিকেশন (ব্যবহারকারীকে দেখানো হয়) এবং ডেটা নোটিফিকেশন (ব্যাকগ্রাউন্ড প্রসেসিংয়ের জন্য ডেটা প্রেরণ করে)।
পুশ নোটিফিকেশন আর্কিটেকচারে তিনটি উপাদান অন্তর্ভুক্ত: (1) অ্যাপ সার্ভার — FCM/APNS-এ অনুরোধ পাঠায়; (2) ক্লাউড সার্ভিস — নোটিফিকেশন রুট করে; (3) ক্লায়েন্ট অ্যাপ — নোটিফিকেশন গ্রহণ এবং প্রক্রিয়া করে। সার্ভারকে ডিভাইসের ডিভাইস টোকেন জানতে হবে যাতে বিশেষভাবে এটিতে নোটিফিকেশন পাঠাতে পারে। গণ পাঠানোর জন্য Topic Subscription ব্যবহার করা হয় — বিষয়ভিত্তিক চ্যানেলে (খবর, অফার, আবহাওয়া) ডিভাইসের সদস্যতা।
প্রতিটি ডিভাইসে, নোটিফিকেশনগুলি অপারেটিং সিস্টেম দ্বারা প্রক্রিয়া করা হয়: Android — NotificationManager এবং NotificationChannel-এর মাধ্যমে, iOS — UNUserNotificationCenter-এর মাধ্যমে। ব্যবহারকারী প্রতিটি চ্যানেলের জন্য নোটিফিকেশন আচরণ কনফিগার করতে পারেন: শব্দ, ব্যানার, লক স্ক্রিনে দেখানো বা সম্পূর্ণরূপে নিষ্ক্রিয় করা। চ্যানেলগুলির সঠিক কনফিগারেশন ব্যস্ততা বাড়ায় এবং আনসাবস্ক্রাইব হার কমায়।
IT Sectr-এ, আমরা প্রথম থেকেই প্ল্যাটফর্ম-নির্দিষ্ট বৈশিষ্ট্যগুলি বিবেচনা করে পুশ নোটিফিকেশন সিস্টেম ডিজাইন করি। মূল সিদ্ধান্ত: FCM এবং সরাসরি APNS-এর মধ্যে নির্বাচন, পেলোড ফরম্যাট, পাঠানোর ফ্রিকোয়েন্সি এবং সদস্যতা মেকানিক্স। এটি এমন পরিস্থিতি এড়াতে সাহায্য করে যেখানে নোটিফিকেশন পৌঁছায় না বা সিস্টেম দ্বারা ব্লক করা হয়।
Firebase Cloud Messaging (FCM) হল নোটিফিকেশন সরবরাহের জন্য Google-এর ক্রস-প্ল্যাটফর্ম সার্ভিস। FCM Android, iOS, Web এবং Flutter সমর্থন করে। iOS-এ, FCM APNS-এর মাধ্যমে কাজ করে: FCM APNS-এ অনুরোধ পাঠায়, যা ডিভাইসে নোটিফিকেশন পৌঁছে দেয়। FCM-এর সুবিধা: উভয় প্ল্যাটফর্মের জন্য একক API, অন্তর্নির্মিত বিশ্লেষণ, A/B পরীক্ষণ, বিষয় এবং দর্শক সেগমেন্ট।
Apple Push Notification Service (APNS) হল Apple-এর নেটিভ সার্ভিস। এটি শুধুমাত্র Apple ডিভাইসে (iOS, macOS, watchOS, tvOS) কাজ করে। এটির জন্য TLS সার্টিফিকেট বা টোকেন (JWT)-এর মাধ্যমে সরাসরি অনুমোদন প্রয়োজন। APNS প্রদান করে ন্যূনতম ডেলিভারি লেটেন্সি এবং iOS বৈশিষ্ট্যগুলির সাথে সরাসরি ইন্টিগ্রেশন: PushKit, Notification Service Extension এবং ক্রিটিক্যাল অ্যালার্ট।
FCM এবং APNS-এর মধ্যে নির্বাচন প্রজেক্ট আর্কিটেকচারের উপর নির্ভর করে। যদি অ্যাপ শুধুমাত্র iOS-এর হয় — APNS আরও নিয়ন্ত্রণ দেয়। যদি ক্রস-প্ল্যাটফর্ম হয় — FCM একক API-এর সাথে আরও সুবিধাজনক। অনেক প্রজেক্ট FCM-কে প্রধান সার্ভিস হিসেবে ব্যবহার করে এবং iOS-এ VoIP-এর জন্য অতিরিক্তভাবে PushKit কনফিগার করে। হাইব্রিড পদ্ধতি উভয় সিস্টেম থেকে সেরাটি পেতে দেয়।
| বৈশিষ্ট্য | FCM | APNS |
|---|---|---|
| প্ল্যাটফর্ম | Android, iOS, Web, Flutter | iOS, macOS, watchOS, tvOS |
| অনুমোদন | সার্ভার কী (Firebase Console) | TLS সার্টিফিকেট বা JWT টোকেন |
| সর্বোচ্চ পেলোড | 4 KB (data), 2 KB (notification) | 4 KB |
| বিষয় | অন্তর্নির্মিত (Topic Messaging) | না (সার্ভার-সাইডে বাস্তবায়িত) |
| সাইলেন্ট পুশ | সমর্থিত | সমর্থিত (content-available) |
| PushKit | না | হ্যাঁ (VoIP, লাইভ অ্যাক্টিভিটি) |
| বিশ্লেষণ | Firebase Analytics | অন্তর্নির্মিত নয় |
| বন্ধ ডিভাইসে ডেলিভারি | সীমিত (প্রস্তুতকারকের উপর নির্ভরশীল) | হ্যাঁ, PushKit-এর মাধ্যমে |
সমৃদ্ধ নোটিফিকেশন এমন একটি নোটিফিকেশন যাতে শুধু টেক্সট নয় বরং মিডিয়া কন্টেন্টও থাকে: ছবি, ভিডিও, অডিও এবং অ্যাকশন বাটন। Android-এ এটি NotificationCompat স্টাইলের মাধ্যমে বাস্তবায়িত হয়: BigPictureStyle (বড় ছবি), BigTextStyle (সংক্ষিপ্ত/বিস্তৃত টেক্সট), InboxStyle (বার্তা তালিকা), MediaStyle (প্লেব্যাক নিয়ন্ত্রণ)। iOS-এ Notification Content Extension ব্যবহার করা হয় — বিস্তৃত নোটিফিকেশনের জন্য কাস্টম UI সহ একটি পৃথক টার্গেট।
সাইলেন্ট পুশ (iOS-এ content-available) হল একটি নোটিফিকেশন যা ব্যবহারকারীকে না দেখিয়ে সরবরাহ করা হয়। এটি ব্যাকগ্রাউন্ড ডেটা আপডেটের জন্য তৈরি: কন্টেন্ট সিঙ্ক্রোনাইজেশন, প্রিলোডিং, উইজেট আপডেট। iOS-এ, সাইলেন্ট পুশের জন্য Background Modes → Remote notifications সক্ষম করা প্রয়োজন। Android-এ ব্যাকগ্রাউন্ড নোটিফিকেশন হ্যান্ডেল করার জন্য FirebaseMessagingService ব্যবহার করা হয় onMessageReceived-এর সাথে। গুরুত্বপূর্ণ: iOS-এ, সাইলেন্ট পুশের ফ্রিকোয়েন্সি সীমাবদ্ধতা রয়েছে এবং অ্যাপ ফোরগ্রাউন্ডে না থাকলে ডেলিভারির গ্যারান্টি দেয় না।
ইন্টারঅ্যাকটিভ নোটিফিকেশন ব্যবহারকারীকে অ্যাপ না খুলেই একটি কাজ করতে দেয়। Android-এ এগুলি নোটিফিকেশনের বাটন (Action): "উত্তর দিন", "অনুমোদন করুন", "প্রত্যাখ্যান করুন"। কাজগুলি PendingIntent-এর মাধ্যমে প্রক্রিয়া করা হয়, যা BroadcastReceiver বা Service চালু করে। iOS-এ, Notification Action নিবন্ধিত হয় UNNotificationAction এবং UNNotificationCategory-এর মাধ্যমে। বাটনগুলি foreground (অ্যাপ খোলে), background (ব্যাকগ্রাউন্ডে এক্সিকিউট) বা destructive (অপরিবর্তনীয় কাজ — মুছে ফেলা, ব্লক করা) হতে পারে।
Notification Content Extension (iOS) — দীর্ঘ প্রেস বা 3D Touch-এ বিস্তৃত নোটিফিকেশন কন্টেন্ট প্রদর্শনের জন্য কাস্টম ভিউ কন্ট্রোলার। Notification Service Extension (iOS) — প্রদর্শনের আগে নোটিফিকেশন কন্টেন্ট পরিবর্তনের জন্য মিডলওয়্যার: E2E বার্তা ডিক্রিপ্ট করা, ছবি লোড করা, গোপনীয় ডেটা অস্বচ্ছ করা। Android-এ সরাসরি অ্যানালগ নেই — সমস্ত পরিবর্তন FirebaseMessagingService-এ করা হয়।
Android-এর জন্য প্রয়োজন: (1) প্রজেক্টে Firebase SDK যোগ করা (google-services.json); (2) নোটিফিকেশনের প্রতিটি শ্রেণীর জন্য NotificationChannel (Android 8+) তৈরি করা; (3) টোকেন এবং আগত বার্তা পাওয়ার জন্য FirebaseMessagingService বাস্তবায়ন করা। Notification Channel বাধ্যতামূলক — এটি ছাড়া Android 8+-এ নোটিফিকেশন দেখানো হবে না। চ্যানেলগুলির অগ্রাধিকার থাকে (IMPORTANCE_HIGH — শব্দ + পপআপ, IMPORTANCE_LOW — শব্দ ছাড়া) এবং ব্যবহারকারী সিস্টেম সেটিংসে এগুলি কনফিগার করতে পারেন।
iOS-এর জন্য প্রয়োজন: (1) Xcode-এ Push Notifications ক्षमতা সক্ষম করা; (2) Apple Developer Portal-এ APNS কী কনফিগার করা; (3) UNUserNotificationCenter.requestAuthorization-এর মাধ্যমে অনুমোদনের অনুরোধ করা — এটি একটি সিস্টেম ডায়ালগ যা একবার দেখানো হয়। ব্যবহারকারীর প্রতিক্রিয়া গুরুত্বপূর্ণ: যদি অনুমতি না দেওয়া হয়, নোটিফিকেশন সরবরাহ করা হবে না। সিস্টেম ডায়ালগ দেখানোর আগে ব্যবহারকারীকে বোঝানোর সুপারিশ করা হয় কেন নোটিফিকেশন প্রয়োজন (pre-permission prompt)।
ডিভাইস টোকেন (iOS) এবং রেজিস্ট্রেশন টোকেন (Android) পুশ নোটিফিকেশনের জন্য অনন্য ডিভাইস শনাক্তকারী। টোকেন প্রথম অ্যাপ লঞ্চে জেনারেট হয় এবং পরিবর্তন হতে পারে: পুনঃইনস্টল, ডেটা মুছে ফেলা, গোপনীয়তা সেটিংস রিসেট করার সময়। সার্ভারকে নিয়মিত টোকেন আপডেট করতে হবে। Firebase প্রদান করে onNewToken-এর মাধ্যমে টোকেন ব্যবস্থাপনার জন্য সুবিধাজনক API, পাশাপাশি পরীক্ষামূলক নোটিফিকেশন পাঠানোর প্যানেল (Firebase Console → Cloud Messaging)।
Topic Subscription হল FCM-এর সবচেয়ে কার্যকর প্রক্রিয়াগুলির মধ্যে একটি। ডিভাইস একটি বিষয়ে (যেমন "news", "promo_users_ios") সাবস্ক্রাইব করে, এবং সার্ভার টোকেনের তালিকা সংরক্ষণ না করেই বিষয় অনুযায়ী নোটিফিকেশন পাঠায়। Firebase Topics প্রতি বিষয়ে দশ লক্ষ সাবস্ক্রাইবার এবং এক্সপ্রেশন ভাষার মাধ্যমে শর্তসাপেক্ষ পাঠানো (Condition) সমর্থন করে: "'news' in topics && ('US' in topics || 'UK' in topics)" ।
Notification Payload হল FCM/APNS-এর মাধ্যমে পাঠানো JSON কাঠামো। FCM-এর জন্য: পৃথক notification (দৃশ্যমান অংশ — শিরোনাম, বডি, ছবি) এবং data (অ্যাপের জন্য কাস্টম ফিল্ড)। APNS-এর জন্য: alert, badge, sound, category এবং content-available সহ aps অভিধান। সঠিক পেলোড কাঠামো গুরুত্বপূর্ণ: যদি notification + data একসাথে আসে, ব্যাকগ্রাউন্ডে অ্যাপ data নাও পেতে পারে। Android-এর জন্য শুধুমাত্র data বার্তা ব্যবহার করার এবং FCM Console-এর মাধ্যমে দৃশ্যমান ফিল্ড আলাদাভাবে পাঠানোর সুপারিশ করা হয়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
FCM (Firebase Cloud Messaging) হল Android এবং ক্রস-প্ল্যাটফর্ম নোটিফিকেশনের জন্য Google-এর সার্ভিস। APNS (Apple Push Notification Service) শুধুমাত্র iOS/macOS-এর জন্য Apple-এর সার্ভিস। FCM নোটিফিকেশন সরবরাহ করতে পারে iOS-এ APNS-এর মাধ্যমে, প্রক্সি সার্ভার হিসেবে কাজ করে।
রিচ নোটিফিকেশন হল মিডিয়া কন্টেন্ট সহ একটি উন্নত নোটিফিকেশন: ছবি, ভিডিও, অডিও, অ্যাকশন বাটন। iOS-এ এটি Notification Content Extension-এর মাধ্যমে বাস্তবায়িত হয়; Android-এ BigPictureStyle এবং InboxStyle-এর মাধ্যমে।
ডিভাইস টোকেন পুশ নোটিফিকেশন পাঠানোর জন্য অনন্য ডিভাইস শনাক্তকারী। Android-এ এটি FCM-এর রেজিস্ট্রেশন টোকেন; iOS-এ APNS-এর ডিভাইস টোকেন। টোকেন পরিবর্তন হতে পারে অ্যাপ পুনঃইনস্টল বা সেটিংস রিসেট করার সময়, তাই এটি সার্ভারে আপডেট করা প্রয়োজন।
সাইলেন্ট পুশ (নিরব নোটিফিকেশন) ব্যবহারকারীকে না দেখিয়ে একটি নোটিফিকেশন। এটি ব্যাকগ্রাউন্ড ডেটা আপডেটের জন্য ব্যবহৃত হয়: কন্টেন্ট সিঙ্ক্রোনাইজেশন, উইজেট আপডেট, প্রিফেচিং। iOS-এ এটি সক্ষম করা প্রয়োজন Background Modes → Remote notifications।
PushKit হল VoIP অ্যাপে (কল, মেসেঞ্জার) ব্যবহৃত উচ্চ-অগ্রাধিকার নোটিফিকেশন সরবরাহের জন্য Apple ফ্রেমওয়ার্ক। PushKit নোটিফিকেশন সরবরাহ করে এমনকি যদি অ্যাপ বন্ধ থাকে এবং প্রক্রিয়াকরণের জন্য অ্যাপ লঞ্চের গ্যারান্টি দেয়।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।