ব্রাউজার বন্ধ থাকলে পুশ কাজ করে না কেন?
এই প্রশ্নটি প্রায়ই করা হয়, কারণ এমন কিছু পরিস্থিতি তৈরি হয় যার ফলে এই বিষয়ে যুক্তি দেওয়া ও বোঝা কঠিন হয়ে পড়ে।
Android দিয়ে শুরু করা যাক। Android OS এমনভাবে ডিজাইন করা হয়েছে যাতে পুশ মেসেজ এলে তা বুঝতে পারে এবং মেসেজ পেলে, পুশ মেসেজ ম্যানেজ করার জন্য উপযুক্ত Android অ্যাপ চালু করে, অ্যাপটি বন্ধ আছে কিনা তা এক্ষেত্রে দেখা হয় না।
Android-এর যেকোনও ব্রাউজারের ক্ষেত্রেও ঠিক একই জিনিস হয়, পুশ মেসেজ পেলে ব্রাউজার সক্রিয় হয়ে ওঠে এবং তারপর ব্রাউজার আপনার সার্ভিস ওয়ার্কারকে সক্রিয় করে তোলে এবং পুশ ইভেন্ট ডিসপ্যাচ করে।
ডেস্কটপ OS-এ, এটি আরও সূক্ষ্ম এবং Mac OS X-এ ব্যাখ্যা করা সবচেয়ে সহজ কারণ বিভিন্ন পরিস্থিতি ব্যাখ্যা করতে সাহায্য করার জন্য একটি ভিজ্যুয়াল ইন্ডিকেটর রয়েছে।
Mac OS X-এ, ডকে অ্যাপ আইকনের নিচে একটি চিহ্ন দেখে আপনি বুঝতে পারবেন যে কোনও প্রোগ্রাম চলছে কিনা।
আপনি যদি নিচের ডকে দুটি Chrome আইকন তুলনা করেন, তাহলে বাঁদিকেরটি চলছে, যেমনটি আইকনের নিচে চিহ্নিত করা হয়েছে, যেখানে ডানদিকের Chrome চলছে না, তাই নিচে কোনও চিহ্ন নেই।
ডেস্কটপে পুশ মেসেজ পাওয়ার ক্ষেত্রে, ব্রাউজার চালু থাকলে আপনি মেসেজ পাবেন, অর্থাৎ আইকনের নিচে মার্কিং থাকবে।
এর অর্থ হল, ব্রাউজারে কোনও উইন্ডো খোলা না থাকলেও, আপনি নিজের সার্ভিস ওয়ার্কারে পুশ মেসেজ পাবেন, কারণ ব্রাউজার ব্যাকগ্রাউন্ডে চলছে।
শুধুমাত্র ব্রাউজার সম্পূর্ণ বন্ধ থাকলে, অর্থাৎ একেবারেই না চললে (কোনও মার্কিং নেই) পুশ বিজ্ঞপ্তি পাওয়া যাবে না। Windows-এর ক্ষেত্রেও একই কথা প্রযোজ্য, তবে Chrome ব্যাকগ্রাউন্ডে চলছে কিনা তা নির্ধারণ করা একটু কঠিন।
আমি কীভাবে পুশ থেকে আমার হোম স্ক্রিন ওয়েব অ্যাপ ফুলস্ক্রিন খুলব?
Android-এর জন্য Chrome-এ, হোম স্ক্রিনে একটি ওয়েব অ্যাপ যোগ করা যেতে পারে এবং হোম স্ক্রিন থেকে ওয়েব অ্যাপ খোলা হলে, এটি URL বার ছাড়াই ফুল-স্ক্রিন মোডে চালু হতে পারে, যেমন নিচে দেখানো হয়েছে।
এই অভিজ্ঞতা ধারাবাহিক রাখতে, ডেভেলপাররা চান যে তাদের ক্লিক করা বিজ্ঞপ্তিগুলিও তাদের ওয়েব অ্যাপ ফুল-স্ক্রিনে খুলুক।
Chrome "এক ধরনের" এটি প্রয়োগ করেছে, যদিও আপনি এটি নির্ভরযোগ্য নাও পেতে পারেন এবং এর সাথে যুক্তি করা কঠিন। প্রাসঙ্গিক প্রয়োগের বিবরণ হল:
এর অর্থ হল, আপনার ব্যবহারকারী যদি হোম স্ক্রিন আইকনের মাধ্যমে আপনার সাইটে নিয়মিত ভিজিট না করেন, তাহলে আপনার বিজ্ঞপ্তি সাধারণ ব্রাউজার UI-তে খুলবে।
এই সমস্যাটি নিয়ে আরও কাজ করা হবে।
এটি ওয়েব সকেটের চেয়ে কেন ভাল?
ব্রাউজার উইন্ডো বন্ধ করা হলে সার্ভিস ওয়ার্কারকে চালু করা যেতে পারে। ব্রাউজার ও ওয়েব পেজ যতক্ষণ খোলা থাকবে, ওয়েব সকেটও ততক্ষণ লাইভ থাকবে।
GCM, FCM, ওয়েব পুশ ও Chrome-এর মধ্যে কী সম্পর্ক?
এই প্রশ্নের অনেক দিক আছে এবং এটি ব্যাখ্যা করার সবচেয়ে সহজ উপায় হল ওয়েব পুশ ও Chrome-এর ইতিহাস ধাপে ধাপে দেখা। (চিন্তা করবেন না, এটি ছোট।)
ডিসেম্বর ২০১৪
Chrome যখন প্রথমবার ওয়েব পুশ প্রয়োগ করেছিল, তখন সার্ভার থেকে ব্রাউজারে পুশ মেসেজ পাঠানোর জন্য Chrome, Google Cloud Messaging (GCM) ব্যবহার করেছিল।
এটি ওয়েব পুশ ছিল না। Chrome ও GCM-এর এই প্রাথমিক সেট-আপ "আসল" ওয়েব পুশ না হওয়ার কয়েকটি কারণ আছে।
- GCM-এর জন্য ডেভেলপারদের Google Developers Console-এ একটি অ্যাকাউন্ট সেট-আপ করতে হবে।
- মেসেজিং সঠিকভাবে সেট-আপ করার জন্য Chrome ও GCM-এর একটি বিশেষ প্রেরক আইডি প্রয়োজন যা কোনও ওয়েব অ্যাপের মাধ্যমে শেয়ার করা হবে।
- GCM-এর সার্ভার একটি কাস্টম API অনুরোধ গ্রহণ করেছে যা ওয়েব স্ট্যান্ডার্ড ছিল না।
জুলাই ২০১৬
জুলাই মাসে ওয়েব পুশে নতুন ফিচার এসেছে - অ্যাপ্লিকেশন সার্ভার কী (বা VAPID, স্পেসিফিকেশন যে নামে পরিচিত)। Chrome যখন এই নতুন API-এর জন্য সহায়তা যোগ করে, তখন এটি মেসেজিং পরিষেবা হিসেবে GCM-এর পরিবর্তে Firebase Cloud Messaging (FCM নামেও পরিচিত) ব্যবহার করে। এটি কয়েকটি কারণে গুরুত্বপূর্ণ:
- Chrome এবং অ্যাপ্লিকেশন সার্ভার কী-এর জন্য Google বা Firebase-এর সাথে কোনও ধরনের প্রোজেক্ট সেট-আপ করার প্রয়োজন হয় না। এটি কাজ করবে।
- FCM ওয়েব পুশ প্রোটোকল সাপোর্ট করে, যা হল এমন API যা সব ওয়েব পুশ পরিষেবা সাপোর্ট করবে। এর অর্থ হল, কোনও ব্রাউজার যে পুশ পরিষেবাই ব্যবহার করুক না কেন, আপনি একই ধরনের অনুরোধ করলেই এটি মেসেজ পাঠিয়ে দেবে।
আজ কেন বিভ্রান্তিকর?
ওয়েব পুশ সংক্রান্ত বিষয়ে কন্টেন্ট লেখার কারণে এখন অনেক বিভ্রান্তি তৈরি হয়েছে, যার মধ্যে বেশিরভাগই GCM বা FCM-কে রেফারেন্স হিসেবে ব্যবহার করে। কন্টেন্টে GCM-এর উল্লেখ থাকলে, আপনি সম্ভবত এটিকে পুরনো কন্টেন্ট অথবা Chrome-এর উপর খুব বেশি ফোকাস করা কন্টেন্ট হিসেবে বিবেচনা করবেন। (আমি বেশ কিছু পুরনো পোস্টে এই কাজ করেছি।)
পরিবর্তে, ওয়েব পুশকে এমন একটি ব্রাউজার হিসেবে ভাবুন যা মেসেজ পাঠানো ও গ্রহণ করা ম্যানেজ করার জন্য পুশ পরিষেবা ব্যবহার করে, যেখানে পুশ পরিষেবা "ওয়েব পুশ প্রোটোকল" অনুরোধ গ্রহণ করবে। আপনি যদি এই শর্তাবলী মেনে চলেন, তাহলে কোন ব্রাউজার এবং কোন পুশ পরিষেবা ব্যবহার করা হচ্ছে তা উপেক্ষা করে কাজ শুরু করতে পারেন।
এই নির্দেশিকাটি ওয়েব পুশের স্ট্যান্ডার্ড পদ্ধতির উপর ফোকাস করার জন্য লেখা হয়েছে এবং উদ্দেশ্যমূলকভাবে অন্য কিছু উপেক্ষা করে।
Firebase-এ জাভাস্ক্রিপ্ট SDK আছে। কী এবং কেন?
আপনারা যারা Firebase ওয়েব SDK খুঁজে পেয়েছেন এবং লক্ষ্য করেছেন যে এতে JavaScript-এর জন্য একটি মেসেজিং API আছে, তারা হয়ত ভাবছেন যে এটি ওয়েব পুশ থেকে কীভাবে আলাদা।
মেসেজিং SDK (Firebase Cloud Messaging JS SDK নামে পরিচিত) ওয়েব পুশ প্রয়োগ করা সহজ করার জন্য নেপথ্যে কিছু কৌশল অবলম্বন করে।
PushSubscriptionএবং এর বিভিন্ন ফিল্ড নিয়ে চিন্তা করার পরিবর্তে, আপনাকে শুধু FCM টোকেন (একটি স্ট্রিং) নিয়ে চিন্তা করতে হবে।- প্রতিটি ব্যবহারকারীর জন্য টোকেন ব্যবহার করে, আপনি পুশ মেসেজ ট্রিগার করতে মালিকানাধীন FCM API ব্যবহার করতে পারেন। এই API-এর জন্য পেলোড এনক্রিপ্ট করার প্রয়োজন নেই। আপনি POST অনুরোধের বডিতে প্লেন টেক্সট পেলোড পাঠাতে পারবেন।
- FCM-এর মালিকানাধীন API কাস্টম ফিচার সাপোর্ট করে, যেমন FCM বিষয় (এটি ওয়েবেও কাজ করে, যদিও এটি খুব কম ডকুমেন্ট করা হয়েছে)।
- সবশেষে, FCM, Android, iOS এবং ওয়েব প্ল্যাটফর্মে কাজ করে, তাই কিছু টিমের পক্ষে আগে থেকে থাকা প্রোজেক্টে এটি ব্যবহার করা সহজ হয়।
এটি ব্যাকগ্রাউন্ডে ওয়েব পুশ ব্যবহার করে, তবে এর লক্ষ্য হল এটিকে আড়ালে রাখা।
আগের প্রশ্নে আমি যেমন বলেছি, আপনি যদি ওয়েব পুশকে শুধু একটি ব্রাউজার ও পুশ পরিষেবা হিসেবে বিবেচনা করেন, তাহলে Firebase-এ মেসেজিং SDK-কে ওয়েব পুশ প্রয়োগ করার কাজ সহজ করার জন্য একটি লাইব্রেরি হিসেবে বিবেচনা করতে পারেন।
এরপর কোথায় যেতে হবে
- ওয়েব থেকে পাঠানো পুশ বিজ্ঞপ্তি এক নজরে
- পুশ কীভাবে কাজ করে
- ব্যবহারকারীকে সাবস্ক্রাইব করা
- অনুমতি UX
- ওয়েব পুশ লাইব্রেরির মাধ্যমে মেসেজ পাঠানো
- ওয়েব পুশ প্রোটোকল
- পুশ ইভেন্ট ম্যানেজ করা
- বিজ্ঞপ্তি দেখানো
- বিজ্ঞপ্তি সংক্রান্ত আচরণ
- সাধারণ বিজ্ঞপ্তির প্যাটার্ন
- পুশ বিজ্ঞপ্তি সংক্রান্ত প্রায়শই জিজ্ঞাসিত প্রশ্ন
- সাধারণ সমস্যা এবং বাগ সম্পর্কে অভিযোগ জানানো