পুশ বিজ্ঞপ্তি ওভারভিউ

পুশ নোটিফিকেশন কী, কেন আপনি এটি ব্যবহার করতে পারেন এবং এটি কীভাবে কাজ করে, তার একটি সংক্ষিপ্ত বিবরণ।

কেসি বাস্কস
Kayce Basques
Matt Gaunt

পুশ নোটিফিকেশন বলতে কী বোঝায়?

পুশ মেসেজের মাধ্যমে আপনি আপনার ব্যবহারকারীদের কাছে তথ্য পৌঁছে দিতে পারেন, এমনকি যখন তারা আপনার ওয়েবসাইট ব্যবহার করছেন না তখনও। এগুলোকে পুশ মেসেজ বলা হয় কারণ ব্যবহারকারীরা সক্রিয় না থাকলেও আপনি তাদের কাছে তথ্য "পুশ" করতে পারেন। এই ধারণাটি আরও ভালোভাবে বোঝার জন্য পুশ প্রযুক্তির সাথে পুল প্রযুক্তির তুলনা করুন।

নোটিফিকেশন ব্যবহারকারীকে অল্প পরিমাণে তথ্য প্রদান করে। ওয়েবসাইটগুলো গুরুত্বপূর্ণ, সময়-সংবেদনশীল ঘটনা বা ব্যবহারকারীর করণীয় কাজ সম্পর্কে জানাতে নোটিফিকেশন ব্যবহার করতে পারে। প্ল্যাটফর্মভেদে নোটিফিকেশনের চেহারা ও ধরন ভিন্ন হয়ে থাকে:

ম্যাকওএস এবং অ্যান্ড্রয়েডে নোটিফিকেশনের উদাহরণ।
ম্যাকওএস এবং অ্যান্ড্রয়েডে নোটিফিকেশনের উদাহরণ।

পুশ মেসেজ এবং নোটিফিকেশন দুটি পৃথক কিন্তু পরিপূরক প্রযুক্তি। পুশ হলো এমন একটি প্রযুক্তি যা আপনার সার্ভার থেকে ব্যবহারকারীদের কাছে বার্তা পাঠায়, এমনকি যখন তারা সক্রিয়ভাবে আপনার ওয়েবসাইট ব্যবহার করছেন না। নোটিফিকেশন হলো ব্যবহারকারীর ডিভাইসে পুশ করা তথ্য প্রদর্শন করার প্রযুক্তি। পুশ মেসেজিং ছাড়াই নোটিফিকেশন ব্যবহার করা সম্ভব। একদিন হয়তো ব্যবহারকারীর কাছে নোটিফিকেশন না দেখিয়েও ( সাইলেন্ট পুশ ) পুশ মেসেজ ব্যবহার করা সম্ভব হবে, কিন্তু ব্রাউজারগুলো বর্তমানে তা অনুমোদন করে না। বাস্তবে, এগুলো সাধারণত একসাথে ব্যবহৃত হয়। একজন অ-প্রযুক্তিগত ব্যবহারকারী সম্ভবত পুশ মেসেজ এবং নোটিফিকেশনের মধ্যে পার্থক্য বুঝতে পারবেন না। এই সংকলনে যখন আমরা পুশ নোটিফিকেশন বলি, তখন আমরা একটি বার্তা পুশ করার পর সেটিকে নোটিফিকেশন হিসেবে প্রদর্শন করার সম্মিলিত প্রক্রিয়াকে বোঝাই। যখন আমরা পুশ মেসেজ বলি, তখন আমরা শুধুমাত্র পুশ প্রযুক্তিকে বোঝাই। এবং যখন আমরা নোটিফিকেশন বলি, তখন আমরা শুধুমাত্র নোটিফিকেশন প্রযুক্তিকে বোঝাই।

পুশ নোটিফিকেশন কেন ব্যবহার করবেন?

  • ব্যবহারকারীদের জন্য, পুশ নোটিফিকেশন হলো সময়োপযোগী , প্রাসঙ্গিক এবং সুনির্দিষ্ট তথ্য পাওয়ার একটি উপায়।
  • আপনার (ওয়েবসাইটের মালিকের) জন্য, পুশ নোটিফিকেশন হলো ব্যবহারকারীদের সম্পৃক্ততা বাড়ানোর একটি উপায়।

পুশ নোটিফিকেশন কীভাবে কাজ করে?

মোটামুটিভাবে, পুশ নোটিফিকেশন বাস্তবায়নের মূল ধাপগুলো হলো:

  1. পুশ নোটিফিকেশন পাঠানোর জন্য ব্যবহারকারীর কাছে অনুমতি চাইতে ক্লায়েন্ট লজিক যোগ করা, এবং তারপর ডেটাবেসে সংরক্ষণের জন্য আপনার সার্ভারে ক্লায়েন্ট আইডেন্টিফায়ার তথ্য পাঠানো।
  2. ক্লায়েন্ট ডিভাইসগুলিতে মেসেজ পাঠানোর জন্য সার্ভার লজিক যোগ করা হচ্ছে।
  3. ডিভাইসে পুশ করা মেসেজগুলো গ্রহণ করে সেগুলোকে নোটিফিকেশন হিসেবে দেখানোর জন্য ক্লায়েন্ট লজিক যোগ করা হচ্ছে।

এই পৃষ্ঠার বাকি অংশে এই ধাপগুলো আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।

পুশ নোটিফিকেশন পাঠানোর অনুমতি নিন

প্রথমত, আপনার ওয়েবসাইটকে পুশ নোটিফিকেশন পাঠানোর জন্য ব্যবহারকারীর অনুমতি নিতে হবে। এটি ব্যবহারকারীর কোনো অঙ্গভঙ্গির মাধ্যমে শুরু হওয়া উচিত, যেমন Do you want to receive push notifications? এই প্রম্পটের পাশে থাকা ' হ্যাঁ' বোতামে ক্লিক করা। সেই নিশ্চিতকরণের পরে, Notification.requestPermission() কল করুন। ব্যবহারকারীর ডিভাইসের অপারেটিং সিস্টেম বা ব্রাউজার সম্ভবত কোনো এক ধরনের ইউজার ইন্টারফেস (UI) দেখাবে, যা আনুষ্ঠানিকভাবে নিশ্চিত করবে যে ব্যবহারকারী পুশ নোটিফিকেশন চালু করতে চান। এই UI বিভিন্ন প্ল্যাটফর্মে ভিন্ন ভিন্ন হয়ে থাকে।

ক্লায়েন্টকে পুশ নোটিফিকেশনের জন্য সাবস্ক্রাইব করুন।

অনুমতি পাওয়ার পর, আপনার ওয়েবসাইটকে ব্যবহারকারীকে পুশ নোটিফিকেশনের জন্য সাবস্ক্রাইব করার প্রক্রিয়া শুরু করতে হবে। এটি জাভাস্ক্রিপ্টের মাধ্যমে পুশ এপিআই (Push API) ব্যবহার করে করা হয়। সাবস্ক্রিপশন প্রক্রিয়ার সময় আপনাকে একটি পাবলিক অথেন্টিকেশন কী (public authentication key) প্রদান করতে হবে, যা সম্পর্কে আপনি পরে আরও জানতে পারবেন। সাবস্ক্রিপশন প্রক্রিয়াটি শুরু করার পর, ব্রাউজার পুশ সার্ভিস (push service) নামে পরিচিত একটি ওয়েব সার্ভিসে নেটওয়ার্ক রিকোয়েস্ট পাঠায়, যা সম্পর্কেও আপনি পরে আরও জানতে পারবেন।

সাবস্ক্রিপশন সফল হলে, ব্রাউজার একটি PushSubscription অবজেক্ট ফেরত দেয়। আপনাকে এই ডেটা দীর্ঘমেয়াদীভাবে সংরক্ষণ করতে হবে। সাধারণত, আপনার নিয়ন্ত্রিত কোনো সার্ভারে তথ্য পাঠিয়ে এবং তারপর সার্ভারকে দিয়ে তা একটি ডেটাবেসে সংরক্ষণ করিয়ে এই কাজটি করা হয়।

১. পুশ মেসেজ পাঠানোর অনুমতি নিন। ২. পুশ সাবস্ক্রিপশন নিন। ৩. আপনার সার্ভারে পুশ সাবস্ক্রিপশনটি পাঠান।

পুশ মেসেজ পাঠান

আপনার সার্ভার আসলে সরাসরি কোনো ক্লায়েন্টের কাছে পুশ মেসেজ পাঠায় না। একটি পুশ সার্ভিস এই কাজটি করে থাকে। পুশ সার্ভিস হলো একটি ওয়েব সার্ভিস যা আপনার ব্যবহারকারীর ব্রাউজার ভেন্ডর দ্বারা নিয়ন্ত্রিত হয়। যখন আপনি কোনো ক্লায়েন্টের কাছে পুশ নোটিফিকেশন পাঠাতে চান, তখন আপনাকে একটি পুশ সার্ভিসে ওয়েব সার্ভিস রিকোয়েস্ট পাঠাতে হয়। পুশ সার্ভিসে আপনি যে ওয়েব সার্ভিস রিকোয়েস্টটি পাঠান, তা ওয়েব পুশ প্রোটোকল রিকোয়েস্ট নামে পরিচিত। ওয়েব পুশ প্রোটোকল রিকোয়েস্টে নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত থাকা উচিত:

  • বার্তায় কোন তথ্য অন্তর্ভুক্ত করতে হবে
  • কোন ক্লায়েন্টকে বার্তাটি পাঠাতে হবে
  • পুশ সার্ভিসটি কীভাবে বার্তাটি পাঠাবে, সে সম্পর্কিত নির্দেশাবলী। উদাহরণস্বরূপ, আপনি নির্দিষ্ট করে দিতে পারেন যে পুশ সার্ভিসটি ১০ মিনিট পর বার্তা পাঠানোর চেষ্টা বন্ধ করে দেবে।

সাধারণত আপনি আপনার নিয়ন্ত্রিত একটি সার্ভারের মাধ্যমে ওয়েব পুশ প্রোটোকল রিকোয়েস্ট পাঠান। অবশ্যই, আপনার সার্ভারকে সরাসরি ওয়েব সার্ভিস রিকোয়েস্টটি নিজে থেকে তৈরি করতে হবে এমন কোনো বাধ্যবাধকতা নেই। এমন কিছু লাইব্রেরি আছে যা আপনার হয়ে এই কাজটি করে দিতে পারে, যেমন ওয়েব-পুশ-লাইব্রেরি । কিন্তু এর মূল কার্যপ্রণালী হলো HTTP-এর মাধ্যমে একটি ওয়েব সার্ভিস রিকোয়েস্ট পাঠানো।

আপনার সার্ভার পুশ সার্ভিসে একটি ওয়েব পুশ প্রোটোকল অনুরোধ পাঠায় এবং পুশ সার্ভিসটি ব্যবহারকারীর ডিভাইসে বার্তাটি পাঠিয়ে দেয়।

পুশ সার্ভিস আপনার অনুরোধ গ্রহণ করে, সেটির সত্যতা যাচাই করে এবং পুশ মেসেজটি উপযুক্ত ক্লায়েন্টের কাছে পাঠিয়ে দেয়। যদি ক্লায়েন্টের ব্রাউজার অফলাইন থাকে, তবে ব্রাউজারটি অনলাইন না হওয়া পর্যন্ত পুশ সার্ভিসটি পুশ মেসেজটিকে কিউতে রেখে দেয়।

প্রতিটি ব্রাউজার তার নিজের পছন্দমতো পুশ সার্ভিস ব্যবহার করে। একজন ওয়েবসাইট ডেভেলপার হিসেবে এর উপর আপনার কোনো নিয়ন্ত্রণ নেই। এটি কোনো সমস্যা নয়, কারণ ওয়েব পুশ প্রোটোকল রিকোয়েস্টটি স্ট্যান্ডার্ডাইজড বা প্রমিত । অন্য কথায়, ব্রাউজার নির্মাতা কোন পুশ সার্ভিস ব্যবহার করছে তা নিয়ে আপনাকে মাথা ঘামাতে হবে না। আপনাকে শুধু নিশ্চিত করতে হবে যে আপনার ওয়েব পুশ প্রোটোকল রিকোয়েস্টটি স্পেসিফিকেশন বা নির্দিষ্ট মান অনুসরণ করছে। অন্যান্য বিষয়ের মধ্যে, স্পেসিফিকেশনে বলা আছে যে রিকোয়েস্টে অবশ্যই নির্দিষ্ট হেডার অন্তর্ভুক্ত থাকতে হবে এবং ডেটা বাইটের একটি স্ট্রিম হিসেবে পাঠাতে হবে।

তবে, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি ওয়েব পুশ প্রোটোকল অনুরোধটি সঠিক পুশ সার্ভিসে পাঠাচ্ছেন। সাবস্ক্রিপশন প্রক্রিয়ার সময় ব্রাউজার আপনাকে যে PushSubscription ডেটা ফেরত দেয়, তা এই তথ্য সরবরাহ করে। একটি PushSubscription অবজেক্ট দেখতে এইরকম:

{
  "endpoint": "https://fcm.googleapis.com/fcm/send/c1KrmpTuRm…",
  "expirationTime": null,
  "keys": {
    "p256dh": "BGyyVt9FFV…",
    "auth": "R9sidzkcdf…"
  }
}

endpoint ডোমেইনটি মূলত পুশ সার্ভিস। endpoint পাথটি হলো ক্লায়েন্ট শনাক্তকারী তথ্য, যা পুশ সার্ভিসকে সুনির্দিষ্টভাবে নির্ধারণ করতে সাহায্য করে যে কোন ক্লায়েন্টের কাছে বার্তাটি পুশ করতে হবে।

keys এনক্রিপশনের জন্য ব্যবহৃত হয়, যা পরবর্তীতে ব্যাখ্যা করা হয়েছে।

পুশ মেসেজ এনক্রিপ্ট করুন

আপনি পুশ সার্ভিসে যে ডেটা পাঠান তা অবশ্যই এনক্রিপ্ট করা থাকতে হবে। এর ফলে পুশ সার্ভিসটি ক্লায়েন্টের কাছে পাঠানো ডেটা দেখতে পারে না। মনে রাখবেন যে ব্রাউজার ভেন্ডরই ঠিক করে কোন পুশ সার্ভিস ব্যবহার করা হবে, এবং সেই পুশ সার্ভিসটি তাত্ত্বিকভাবে অনিরাপদ বা অরক্ষিত হতে পারে। আপনার সার্ভারকে অবশ্যই তার ওয়েব পুশ প্রোটোকল অনুরোধগুলো এনক্রিপ্ট করার জন্য PushSubscription এ দেওয়া keys ব্যবহার করতে হবে।

আপনার ওয়েব পুশ প্রোটোকল অনুরোধগুলিতে স্বাক্ষর করুন

পুশ সার্ভিসটি আপনার ব্যবহারকারীদের কাছে অন্য কারো বার্তা পাঠানো প্রতিরোধ করার একটি উপায় প্রদান করে। প্রযুক্তিগতভাবে এটি করার প্রয়োজন নেই, কিন্তু ক্রোমে এর সবচেয়ে সহজ বাস্তবায়নের জন্য এটি প্রয়োজন। ফায়ারফক্সে এটি ঐচ্ছিক। ভবিষ্যতে অন্যান্য ব্রাউজারেও এটি প্রয়োজন হতে পারে।

এই ওয়ার্কফ্লোতে একটি প্রাইভেট কী এবং একটি পাবলিক কী জড়িত থাকে, যা আপনার অ্যাপ্লিকেশনের জন্য অনন্য। প্রমাণীকরণ প্রক্রিয়াটি মোটামুটি এইভাবে কাজ করে:

  • আপনি প্রাইভেট এবং পাবলিক কী এককালীন কাজ হিসেবে তৈরি করেন। প্রাইভেট এবং পাবলিক কী-এর এই সমন্বয় অ্যাপ্লিকেশন সার্ভার কী (application server keys) নামে পরিচিত। আপনি এগুলিকে VAPID কী (VAPID keys) নামেও দেখতে পারেন। VAPID হলো সেই স্পেসিফিকেশন যা এই প্রমাণীকরণ প্রক্রিয়াটিকে সংজ্ঞায়িত করে।
  • যখন আপনি আপনার জাভাস্ক্রিপ্ট কোড থেকে কোনো ক্লায়েন্টকে পুশ নোটিফিকেশনের জন্য সাবস্ক্রাইব করেন, তখন আপনি আপনার পাবলিক কী প্রদান করেন। পুশ সার্ভিসটি যখন ডিভাইসটির জন্য একটি endpoint তৈরি করে, তখন এটি প্রদত্ত পাবলিক কী-টিকে সেই endpoint সাথে যুক্ত করে দেয়।
  • যখন আপনি একটি ওয়েব পুশ প্রোটোকল অনুরোধ পাঠান, তখন আপনি আপনার প্রাইভেট কী দিয়ে কিছু JSON তথ্য স্বাক্ষর করেন।
  • যখন পুশ সার্ভিস আপনার ওয়েব পুশ প্রোটোকল অনুরোধ গ্রহণ করে, তখন এটি স্বাক্ষরিত তথ্য প্রমাণীকরণের জন্য সংরক্ষিত পাবলিক কী ব্যবহার করে। যদি স্বাক্ষরটি বৈধ হয়, তাহলে পুশ সার্ভিস বুঝতে পারে যে অনুরোধটি মিলে যাওয়া প্রাইভেট কী-যুক্ত একটি সার্ভার থেকে এসেছে।

পুশ মেসেজের ডেলিভারি কাস্টমাইজ করুন

ওয়েব পুশ প্রোটোকল রিকোয়েস্ট স্পেক এমন কিছু প্যারামিটারও সংজ্ঞায়িত করে, যা আপনাকে কাস্টমাইজ করার সুযোগ দেয় যে পুশ সার্ভিসটি কীভাবে ক্লায়েন্টের কাছে পুশ মেসেজ পাঠানোর চেষ্টা করবে। উদাহরণস্বরূপ, আপনি কাস্টমাইজ করতে পারেন:

  • একটি মেসেজের টাইম টু লিভ (TTL), যা নির্ধারণ করে যে পুশ সার্ভিসটি কতক্ষণ ধরে মেসেজটি ডেলিভার করার চেষ্টা করবে।
  • বার্তার জরুরি অবস্থা, যা সেইসব ক্ষেত্রে উপযোগী যেখানে পুশ সার্ভিসটি শুধুমাত্র উচ্চ-অগ্রাধিকারের বার্তা সরবরাহ করে ক্লায়েন্টের ব্যাটারির আয়ু বাঁচায়।
  • বার্তার এমন একটি বিষয়, যা একই বিষয়ের যেকোনো অপেক্ষমান বার্তাকে সর্বশেষ বার্তা দিয়ে প্রতিস্থাপন করে।

পুশ করা বার্তাগুলো নোটিফিকেশন হিসেবে গ্রহণ ও প্রদর্শন করুন

একবার আপনি পুশ সার্ভিসে ওয়েব পুশ প্রোটোকল অনুরোধ পাঠানোর পর, পুশ সার্ভিস আপনার অনুরোধটি নিম্নলিখিত ঘটনাগুলোর মধ্যে কোনো একটি না ঘটা পর্যন্ত সারিবদ্ধভাবে রেখে দেয়:

  1. ক্লায়েন্ট অনলাইনে এলে পুশ সার্ভিসটি পুশ মেসেজটি পাঠিয়ে দেয়।
  2. বার্তাটির মেয়াদ শেষ হয়ে যায়।

যখন কোনো ক্লায়েন্ট ব্রাউজার একটি পুশ করা বার্তা গ্রহণ করে, তখন এটি পুশ বার্তার ডেটা ডিক্রিপ্ট করে এবং আপনার সার্ভিস ওয়ার্কারে একটি push ইভেন্ট পাঠায়। সার্ভিস ওয়ার্কার মূলত জাভাস্ক্রিপ্ট কোড যা ব্যাকগ্রাউন্ডে চলতে পারে, এমনকি যখন আপনার ওয়েবসাইট খোলা থাকে না বা ব্রাউজার বন্ধ থাকে তখনও। আপনার সার্ভিস ওয়ার্কারের push ইভেন্ট হ্যান্ডেলারে, তথ্যটি একটি নোটিফিকেশন হিসেবে প্রদর্শন করার জন্য আপনি ServiceWorkerRegistration.showNotification() কল করেন।

১. ডিভাইসে মেসেজ আসে। ২. ব্রাউজার সার্ভিস ওয়ার্কারকে জাগিয়ে তোলে। ৩. পুশ ইভেন্ট প্রেরণ করা হয়।

এরপর কোথায় যাবেন

কোড ল্যাব