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

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

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

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

आइए, इनमें से हर चरण के बारे में थोड़ा और विस्तार से जानते हैं.

पहला चरण: क्लाइंट साइड

सबसे पहले, उपयोगकर्ता को पुश मैसेजिंग की "सदस्यता" लेनी होगी.

किसी उपयोगकर्ता को सदस्यता देने के लिए, दो चीज़ों की ज़रूरत होती है. सबसे पहले, उपयोगकर्ता से पुश मैसेज भेजने की अनुमति लेना. दूसरा, ब्राउज़र से PushSubscription पाना.

PushSubscription में वह सारी जानकारी होती है जो हमें उस उपयोगकर्ता को पुश मैसेज भेजने के लिए चाहिए. इसे उस उपयोगकर्ता के डिवाइस के आईडी की तरह समझा जा सकता है.

यह सब JavaScript में Push API की मदद से किया जाता है.

Browser Support

  • Chrome: 42.
  • Edge: 17.
  • Firefox: 44.
  • Safari: 16.

Source

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

ऐप्लिकेशन सर्वर की कुंजियां, आपके सर्वर के लिए यूनीक होती हैं. इन्हें वीएपीआईडी कुंजियां भी कहा जाता है. इनकी मदद से, पुश सेवा को यह पता चलता है कि किस ऐप्लिकेशन सर्वर ने किसी उपयोगकर्ता को सदस्यता दी है. साथ ही, यह पक्का किया जाता है कि वही सर्वर उस उपयोगकर्ता को पुश मैसेज भेज रहा है.

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

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

दूसरा चरण: पुश मैसेज भेजना

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

खुद से ये सवाल पूछें:

  • पुश सेवा क्या है और इसे कौन उपलब्ध कराता है?
  • एपीआई कैसा दिखता है? क्या यह JSON, एक्सएमएल या कुछ और है?
  • एपीआई क्या कर सकता है?

पुश सेवा क्या है और इसे कौन उपलब्ध कराता है?

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

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

पुश मैसेज को ट्रिगर करने के लिए सही यूआरएल (यानी कि पुश सेवा का यूआरएल) पाने के लिए, आपको बस PushSubscription में endpoint वैल्यू देखनी होगी.

यहां उन वैल्यू का उदाहरण दिया गया है जो आपको PushSubscription से मिलेंगी:

{
  "endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
  "keys": {
    "p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
    "auth": "tBHItJI5svbpez7KI4CCXg=="
  }
}

इस मामले में, एंडपॉइंट https://random-push-service.com/some-kind-of-unique-id-1234/v2/ है. पुश सेवा 'random-push-service.com' होगी और हर एंडपॉइंट किसी उपयोगकर्ता के लिए यूनीक होगा. इसे 'some-kind-of-unique-id-1234' से दिखाया जाएगा. पुश का इस्तेमाल शुरू करने पर, आपको यह पैटर्न दिखेगा.

सदस्यता के मुख्य फ़ायदे बाद में बताए जाएंगे.

एपीआई कैसा दिखता है?

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

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

एपीआई क्या कर सकता है?

एपीआई, उपयोगकर्ता को डेटा के साथ या उसके बिना मैसेज भेजने का तरीका उपलब्ध कराता है. साथ ही, मैसेज भेजने के तरीके के बारे में निर्देश देता है.

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

पुश मैसेज ट्रिगर करने पर, पुश सेवा को एपीआई कॉल मिलेगा और वह मैसेज को सूची में जोड़ देगी. यह मैसेज तब तक सूची में रहेगा, जब तक उपयोगकर्ता का डिवाइस ऑनलाइन नहीं हो जाता और पुश सेवा मैसेज डिलीवर नहीं कर देती. पुश सेवा को दिए जाने वाले निर्देशों से यह तय होता है कि पुश मैसेज को सूची में कैसे रखा जाए.

निर्देशों में यह जानकारी शामिल होती है:

  • पुश मैसेज के लिए टाइम-टू-लाइव. इससे यह तय होता है कि किसी मैसेज को हटाने और डिलीवर न करने से पहले, उसे कितने समय तक सूची में रखा जाना चाहिए.

  • मैसेज की अर्जेंसी तय करें. यह तब काम आता है, जब पुश सेवा सिर्फ़ ज़्यादा प्राथमिकता वाले मैसेज डिलीवर करके, उपयोगकर्ताओं की बैटरी लाइफ़ बचा रही हो.

  • पुश मैसेज को "विषय" का नाम दें. इससे, इस नए मैसेज की मदद से, किसी भी लंबित मैसेज को बदला जा सकेगा.

जब आपका सर्वर कोई पुश मैसेज भेजना चाहता है, तो वह पुश सेवा को वेब पुश प्रोटोकॉल का अनुरोध भेजता है. इससे डिवाइस पर मैसेज मिलते हैं.

तीसरा चरण: उपयोगकर्ता के डिवाइस पर इवेंट पुश करना

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

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

जब पुश सेवा कोई मैसेज डिलीवर करती है, तो ब्राउज़र को वह मैसेज मिल जाता है. इसके बाद, ब्राउज़र किसी भी डेटा को डिक्रिप्ट करता है और आपके सर्विस वर्कर में push इवेंट को डिस्पैच करता है.

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

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

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

पुश मैसेज भेजने का यही तरीका है.

आगे क्या करना है

कोड लैब