पुश नोटिफ़िकेशन की खास जानकारी

पुश नोटिफ़िकेशन क्या हैं, इनका इस्तेमाल क्यों किया जाता है, और ये कैसे काम करती हैं, इस बारे में खास जानकारी.

पुश नोटिफ़िकेशन क्या होती हैं?

पुश मैसेज की मदद से, उपयोगकर्ताओं को उस समय भी जानकारी दी जा सकती है, जब वे आपकी वेबसाइट का इस्तेमाल नहीं कर रहे होते हैं. इन्हें पुश मैसेज कहा जाता है, क्योंकि इनकी मदद से उपयोगकर्ताओं को जानकारी "पुश" की जा सकती है. ऐसा तब भी किया जा सकता है, जब वे सक्रिय न हों. इस कॉन्सेप्ट को बेहतर तरीके से समझने के लिए, पुश टेक्नोलॉजी की तुलना पुल टेक्नोलॉजी से करें.

सूचनाओं में, उपयोगकर्ता को कम शब्दों में जानकारी दी जाती है. वेबसाइटें, सूचनाओं का इस्तेमाल करके लोगों को समय-सीमा से जुड़े अहम इवेंट या ऐसी कार्रवाइयों के बारे में बता सकती हैं जिन्हें उपयोगकर्ता को करना है. सूचनाएं दिखने का तरीका, प्लैटफ़ॉर्म के हिसाब से अलग-अलग होता है:

macOS और Android पर सूचनाओं के उदाहरण.
macOS और Android पर सूचनाओं के उदाहरण.

पुश मैसेज और सूचनाएं, दो अलग-अलग टेक्नोलॉजी हैं, लेकिन ये एक-दूसरे के साथ काम करती हैं. पुश एक ऐसी टेक्नोलॉजी है जिसकी मदद से, आपके सर्वर से उपयोगकर्ताओं को मैसेज भेजे जाते हैं. भले ही, वे आपकी वेबसाइट का इस्तेमाल न कर रहे हों. सूचनाएं, उपयोगकर्ता के डिवाइस पर पुश की गई जानकारी को दिखाने की टेक्नोलॉजी है. पुश मैसेजिंग के बिना भी सूचनाएं पाने की सुविधा का इस्तेमाल किया जा सकता है. ऐसा भी हो सकता है कि आने वाले समय में, पुश मैसेज का इस्तेमाल बिना सूचना दिखाए (साइलेंट पुश) किया जा सके. हालांकि, फ़िलहाल ब्राउज़र इसकी अनुमति नहीं देते हैं. असल में, इनका इस्तेमाल आम तौर पर एक साथ किया जाता है. तकनीकी जानकारी न रखने वाला उपयोगकर्ता शायद पुश मैसेज और सूचनाओं के बीच का अंतर न समझ पाए. इस कलेक्शन में, पुश नोटिफ़िकेशन का मतलब है कि हम मैसेज को पुश करने के साथ-साथ उसे सूचना के तौर पर भी दिखाते हैं. पुश मैसेज का मतलब, पुश टेक्नोलॉजी से है. सूचनाएं का मतलब, सूचनाएं पाने की टेक्नोलॉजी से है.

पुश नोटिफ़िकेशन का इस्तेमाल क्यों करें?

  • उपयोगकर्ताओं के लिए, पुश नोटिफ़िकेशन समय पर, काम की, और सटीक जानकारी पाने का एक तरीका है.
  • वेबसाइट के मालिक के तौर पर, पुश नोटिफ़िकेशन की मदद से उपयोगकर्ता की दिलचस्पी बढ़ाई जा सकती है.

पुश नोटिफ़िकेशन कैसे काम करती हैं?

पुश नोटिफ़िकेशन लागू करने के लिए, ये मुख्य चरण अपनाएं:

  1. क्लाइंट लॉजिक जोड़ना, ताकि उपयोगकर्ता से पुश नोटिफ़िकेशन भेजने की अनुमति मांगी जा सके. इसके बाद, क्लाइंट आइडेंटिफ़ायर की जानकारी को आपके सर्वर पर भेजना, ताकि उसे डेटाबेस में सेव किया जा सके.
  2. क्लाइंट डिवाइसों पर पुश मैसेज भेजने के लिए, सर्वर लॉजिक जोड़ना.
  3. डिवाइस पर पुश किए गए मैसेज पाने के लिए, क्लाइंट लॉजिक जोड़ना और उन्हें सूचनाओं के तौर पर दिखाना.

इस पेज के बाकी हिस्से में, इन चरणों के बारे में ज़्यादा जानकारी दी गई है.

पुश नोटिफ़िकेशन भेजने की अनुमति पाना

सबसे पहले, आपकी वेबसाइट को उपयोगकर्ता से पुश सूचनाएं भेजने की अनुमति लेनी होगी. इसे उपयोगकर्ता के किसी जेस्चर से ट्रिगर किया जाना चाहिए. जैसे, Do you want to receive push notifications? प्रॉम्प्ट के बगल में मौजूद हां बटन पर क्लिक करना. पुष्टि हो जाने के बाद, Notification.requestPermission() पर कॉल करें. उपयोगकर्ता के डिवाइस पर मौजूद ऑपरेटिंग सिस्टम या ब्राउज़र, शायद कोई यूज़र इंटरफ़ेस (यूआई) दिखाएगा. इससे यह पुष्टि की जा सकेगी कि उपयोगकर्ता, पुश नोटिफ़िकेशन पाने के लिए ऑप्ट-इन करना चाहता है. यह यूज़र इंटरफ़ेस (यूआई) अलग-अलग प्लैटफ़ॉर्म पर अलग-अलग होता है.

क्लाइंट को पुश नोटिफ़िकेशन पाने की सुविधा के लिए सदस्यता दिलाना

अनुमति मिलने के बाद, आपकी वेबसाइट को उपयोगकर्ता को पुश नोटिफ़िकेशन पाने के लिए ऑप्ट-इन करने की प्रोसेस शुरू करनी होगी. यह JavaScript के ज़रिए किया जाता है. इसके लिए, Push API का इस्तेमाल किया जाता है. सदस्यता लेने की प्रोसेस के दौरान, आपको पुष्टि करने के लिए सार्वजनिक कुंजी देनी होगी. इसके बारे में आपको बाद में ज़्यादा जानकारी मिलेगी. सदस्यता लेने की प्रोसेस शुरू करने के बाद, ब्राउज़र एक नेटवर्क अनुरोध करता है. यह अनुरोध, पुश सर्विस के तौर पर जानी जाने वाली वेब सेवा को भेजा जाता है. इसके बारे में आपको बाद में ज़्यादा जानकारी मिलेगी.

अगर सदस्यता लेने की प्रोसेस पूरी हो जाती है, तो ब्राउज़र PushSubscription ऑब्जेक्ट दिखाता है. आपको इस डेटा को लंबे समय तक सेव करके रखना होगा. आम तौर पर, ऐसा उस सर्वर को जानकारी भेजकर किया जाता है जिसे कंट्रोल करने का अधिकार आपके पास है. इसके बाद, सर्वर उस जानकारी को डेटाबेस में सेव करता है.

1 पुश मैसेज भेजने की अनुमति पाएं. 2. PushSubscription पाएं. 3. PushSubscription को अपने सर्वर पर भेजें.

पुश मैसेज भेजना

आपका सर्वर, पुश मैसेज को सीधे तौर पर क्लाइंट को नहीं भेजता है. पुश सेवा ऐसा करती है. पुश सेवा, एक वेब सेवा है. इसे आपके उपयोगकर्ता के ब्राउज़र वेंडर से कंट्रोल किया जाता है. जब आपको किसी क्लाइंट को पुश सूचना भेजनी हो, तो आपको पुश सेवा के लिए वेब सेवा का अनुरोध करना होगा. पुश सेवा को भेजा गया वेब सेवा अनुरोध, वेब पुश प्रोटोकॉल अनुरोध कहलाता है. वेब पुश प्रोटोकॉल के अनुरोध में यह जानकारी शामिल होनी चाहिए:

  • मैसेज में कौनसा डेटा शामिल करना है.
  • मैसेज किस क्लाइंट को भेजना है.
  • पुश सेवा को मैसेज डिलीवर करने के तरीके के बारे में निर्देश. उदाहरण के लिए, यह तय किया जा सकता है कि पुश सेवा को 10 मिनट के बाद मैसेज भेजने की कोशिश बंद कर देनी चाहिए.

आम तौर पर, वेब पुश प्रोटोकॉल का अनुरोध उस सर्वर के ज़रिए किया जाता है जिसे कंट्रोल करने का अधिकार आपके पास होता है. ज़रूरी नहीं कि आपका सर्वर, वेब सेवा के अनुरोध को खुद ही बनाए. ऐसी लाइब्रेरी मौजूद हैं जो आपके लिए यह काम कर सकती हैं. जैसे, web-push-libs. हालांकि, इसके पीछे काम करने वाला तरीका, एचटीटीपी पर वेब सेवा का अनुरोध है.

आपका सर्वर, पुश सेवा को वेब पुश प्रोटोकॉल का अनुरोध भेजता है. इसके बाद, पुश सेवा उपयोगकर्ता के डिवाइस को मैसेज भेजती है.

पुश सेवा को आपका अनुरोध मिलता है. इसके बाद, वह इसकी पुष्टि करती है और पुश मैसेज को सही क्लाइंट तक पहुंचाती है. अगर क्लाइंट का ब्राउज़र ऑफ़लाइन है, तो पुश सेवा, पुश मैसेज को तब तक के लिए कतार में लगा देती है, जब तक ब्राउज़र ऑनलाइन नहीं हो जाता.

हर ब्राउज़र, अपनी पसंद की पुश सेवा का इस्तेमाल करता है. वेबसाइट डेवलपर के तौर पर, आपके पास इस पर कोई कंट्रोल नहीं होता. यह कोई समस्या नहीं है, क्योंकि वेब पुश प्रोटोकॉल का अनुरोध स्टैंडर्ड है. दूसरे शब्दों में कहें, तो आपको इस बात से कोई फ़र्क़ नहीं पड़ता कि ब्राउज़र वेंडर कौनसी पुश सेवा का इस्तेमाल कर रहा है. आपको बस यह पक्का करना होगा कि वेब पुश प्रोटोकॉल का आपका अनुरोध, स्पेसिफ़िकेशन के मुताबिक हो. अन्य बातों के साथ-साथ, स्पेसिफ़िकेशन में यह भी बताया गया है कि अनुरोध में कुछ हेडर शामिल होने चाहिए और डेटा को बाइट की स्ट्रीम के तौर पर भेजा जाना चाहिए.

हालांकि, आपको यह पक्का करना होगा कि वेब पुश प्रोटोकॉल का अनुरोध, सही पुश सेवा को भेजा जा रहा हो. सदस्यता लेने की प्रोसेस के दौरान, ब्राउज़र ने आपको जो PushSubscription डेटा भेजा था उसमें यह जानकारी मौजूद होती है. PushSubscription ऑब्जेक्ट ऐसा दिखता है:

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

endpoint का डोमेन, पुश सेवा होती है. endpoint का पाथ, क्लाइंट आइडेंटिफ़ायर की जानकारी होती है. इससे पुश सेवा को यह तय करने में मदद मिलती है कि मैसेज को किस क्लाइंट को पुश करना है.

keys का इस्तेमाल एन्क्रिप्शन के लिए किया जाता है. इसके बारे में यहां बताया गया है.

पुश मैसेज को एन्क्रिप्ट (सुरक्षित) करें

पुश सेवा को भेजा जाने वाला डेटा एन्क्रिप्ट (सुरक्षित) किया जाना चाहिए. इससे पुश सेवा, क्लाइंट को भेजे जा रहे डेटा को नहीं देख पाती. ध्यान रखें कि ब्राउज़र वेंडर यह तय करता है कि किस पुश सेवा का इस्तेमाल करना है. साथ ही, यह भी ध्यान रखें कि पुश सेवा सैद्धांतिक रूप से असुरक्षित हो सकती है. आपके सर्वर को, वेब पुश प्रोटोकॉल के अनुरोधों को एन्क्रिप्ट (सुरक्षित) करने के लिए, keys में दिए गए keys का इस्तेमाल करना होगा.PushSubscription

वेब पुश प्रोटोकॉल के अनुरोधों पर हस्ताक्षर करना

पुश सेवा, किसी और व्यक्ति को आपके उपयोगकर्ताओं को मैसेज भेजने से रोकने का तरीका उपलब्ध कराती है. तकनीकी तौर पर, आपको यह काम करने की ज़रूरत नहीं है. हालांकि, Chrome पर इसे लागू करने का सबसे आसान तरीका यही है. Firefox पर यह सुविधा इस्तेमाल करना ज़रूरी नहीं है. ऐसा हो सकता है कि आने वाले समय में, अन्य ब्राउज़र के लिए भी इसकी ज़रूरत पड़े.

इस वर्कफ़्लो में, निजी पासकोड और सार्वजनिक पासकोड शामिल होता है. ये दोनों आपके ऐप्लिकेशन के लिए यूनीक होते हैं. पुष्टि करने की प्रोसेस इस तरह काम करती है:

  • निजी और सार्वजनिक पासकोड को एक बार के टास्क के तौर पर जनरेट किया जाता है. निजी और सार्वजनिक कुंजी के कॉम्बिनेशन को ऐप्लिकेशन सर्वर की कुंजियां कहा जाता है. इन्हें VAPID कुंजियां भी कहा जाता है. VAPID एक ऐसा स्पेसिफ़िकेशन है जो पुष्टि करने की इस प्रोसेस के बारे में बताता है.
  • जब JavaScript कोड से किसी क्लाइंट को पुश नोटिफ़िकेशन पाने के लिए सदस्यता दी जाती है, तब आपको अपनी सार्वजनिक कुंजी देनी होती है. जब पुश सेवा, डिवाइस के लिए endpoint जनरेट करती है, तो वह दी गई सार्वजनिक पासकोड को endpoint से जोड़ देती है.
  • वेब पुश प्रोटोकॉल का अनुरोध भेजते समय, आपको अपनी निजी कुंजी से JSON फ़ॉर्मैट में मौजूद कुछ जानकारी पर हस्ताक्षर करना होता है.
  • जब पुश सेवा को वेब पुश प्रोटोकॉल का अनुरोध मिलता है, तब वह सेव की गई सार्वजनिक कुंजी का इस्तेमाल करके, हस्ताक्षर की गई जानकारी की पुष्टि करती है. अगर हस्ताक्षर मान्य है, तो पुश सेवा को पता चल जाता है कि अनुरोध ऐसे सर्वर से आया है जिसके पास निजी पासकोड है.

पुश मैसेज की डिलीवरी को पसंद के मुताबिक बनाना

वेब पुश प्रोटोकॉल के अनुरोध की खास जानकारी में ऐसे पैरामीटर भी तय किए जाते हैं जिनकी मदद से, यह तय किया जा सकता है कि पुश सेवा, क्लाइंट को पुश मैसेज भेजने की कोशिश कैसे करेगी. उदाहरण के लिए, इनमें पसंद के मुताबिक बदलाव किए जा सकते हैं:

  • मैसेज का टाइम टू लिव (टीटीएल). इससे यह तय होता है कि पुश सेवा को किसी मैसेज को डिलीवर करने की कोशिश कितने समय तक करनी चाहिए.
  • मैसेज की प्राथमिकता. यह तब काम आता है, जब पुश सेवा सिर्फ़ ज़्यादा प्राथमिकता वाले मैसेज डिलीवर करके, क्लाइंट के डिवाइस की बैटरी लाइफ़ बचा रही हो.
  • मैसेज का विषय. इससे एक ही विषय के सभी मैसेज, नए मैसेज से बदल जाते हैं.

पुश किए गए मैसेज को सूचनाओं के तौर पर पाना और दिखाना

पुश सेवा को वेब पुश प्रोटोकॉल का अनुरोध भेजने के बाद, पुश सेवा आपके अनुरोध को तब तक कतार में रखती है, जब तक इनमें से कोई एक इवेंट नहीं हो जाता:

  1. क्लाइंट ऑनलाइन होता है और पुश सेवा, पुश मैसेज डिलीवर करती है.
  2. मैसेज की समयसीमा खत्म हो जाती है.

जब क्लाइंट ब्राउज़र को पुश किया गया मैसेज मिलता है, तो वह पुश मैसेज के डेटा को डिक्रिप्ट करता है. इसके बाद, आपके सर्विस वर्कर को push इवेंट भेजता है. सर्विस वर्कर, JavaScript कोड होता है. यह बैकग्राउंड में काम कर सकता है. भले ही, आपकी वेबसाइट खुली न हो या ब्राउज़र बंद हो. अपने सर्विस वर्कर के push इवेंट हैंडलर में, सूचना के तौर पर जानकारी दिखाने के लिए ServiceWorkerRegistration.showNotification() को कॉल करें.

1. डिवाइस पर मैसेज मिलता है. 2. ब्राउज़र, सर्विस वर्कर को चालू करता है. 3. पुश इवेंट भेजा जाता है.

आगे क्या करें

कोडलैब