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

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

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

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

चलिए, ज़्यादा जानकारी के साथ देखते हैं कि इनमें से हर चरण से क्या ज़रूरी है.

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

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

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

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

पुश एपीआई का इस्तेमाल करके, JavaScript में ऐसा किया जाता है.

ब्राउज़र सहायता

  • 42
  • 17
  • 44
  • 16

सोर्स

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

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

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

पक्का करें कि आपने 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=="
  }
}

इस मामले में, endpoint यह है [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 को एक्ज़ीक्यूट कर सकता है. सर्विस वर्कर में पुश जैसे एपीआई भी होते हैं, जो वेब पेज पर उपलब्ध नहीं होते हैं. जैसे, ऐसे एपीआई जो सर्विस वर्कर स्क्रिप्ट के बाहर उपलब्ध नहीं होते.

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

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

पुश मैसेज के लिए यह काफ़ी कुछ है.

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

कोड लैब