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

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

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

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

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

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

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

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

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

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

बड़े लेवल पर, पुश नोटिफ़िकेशन लागू करने के मुख्य चरण ये हैं:

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

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

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

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

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

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

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

पुश मैसेज भेजने की अनुमति लें. Pushसदस्यता पाएं. अपने सर्वर पर
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 का इस्तेमाल एन्क्रिप्ट (सुरक्षित) करने के लिए किया जाता है, जिसके बारे में आगे बताया गया है.

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

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

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

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

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

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

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

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

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

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

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

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

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

डिवाइस पर मैसेज आया. ब्राउज़र, सर्विस वर्कर को सक्रिय करता है. पुश इवेंट को भेजा गया.

आगे कहां जाना है

कोड लैब