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

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

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

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

आइए, इनमें से हर चरण के बारे में ज़्यादा जानकारी देखें.

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

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

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

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

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

ब्राउज़र के इस्तेमाल से जुड़ी सहायता

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

सोर्स

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

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

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

पक्का करें कि आपने PushSubscription को अपने बैकएंड पर भेजा हो.

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

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

खुद से पूछे जाने वाले कुछ सवाल:

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

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

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

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

पुश मैसेज को ट्रिगर करने के लिए सही यूआरएल (यानी, पुश सेवा का यूआरएल) पाने के लिए, आपको सिर्फ़ 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' से दिखाया जाएगा. पुश नोटिफ़िकेशन का इस्तेमाल शुरू करने पर, आपको यह पैटर्न दिखेगा.

सदस्यता में मौजूद कुंजियों के बारे में बाद में बताया जाएगा.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

पुश मैसेजिंग का पूरा फ़्लो यही है.

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

कोड लैब