पुश नोटिफ़िकेशन के बारे में अक्सर पूछे जाने वाले सवाल

ब्राउज़र बंद होने पर, पुश नोटिफ़िकेशन क्यों काम नहीं करते?

यह सवाल अक्सर पूछा जाता है. इसकी मुख्य वजह यह है कि कुछ मामलों में इसे समझना और इसके पीछे की वजह जानना मुश्किल होता है.

चलिए, Android से शुरुआत करते हैं. Android OS को पुश मैसेज सुनने के लिए डिज़ाइन किया गया है. पुश मैसेज मिलने पर, यह सही Android ऐप्लिकेशन को चालू करता है, ताकि पुश मैसेज को मैनेज किया जा सके. इससे कोई फ़र्क़ नहीं पड़ता कि ऐप्लिकेशन बंद है या नहीं.

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

डेस्कटॉप ओएस पर, यह ज़्यादा बारीकी से काम करता है. इसे Mac OS X पर समझाना सबसे आसान है, क्योंकि इसमें अलग-अलग स्थितियों को समझाने के लिए एक विज़ुअल इंडिकेटर होता है.

Mac OS X पर, डॉक में ऐप्लिकेशन के आइकॉन के नीचे मौजूद निशान से यह पता लगाया जा सकता है कि कोई प्रोग्राम चल रहा है या नहीं.

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

OS X का उदाहरण

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

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

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

मैं होम स्क्रीन पर मौजूद अपने वेब ऐप्लिकेशन को पुश नोटिफ़िकेशन से फ़ुलस्क्रीन मोड में कैसे खोलूं?

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

होम स्क्रीन पर मौजूद आइकॉन से फ़ुलस्क्रीन मोड पर स्विच करना

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

Chrome ने इसे "कुछ हद तक" लागू किया है. हालांकि, आपको यह भरोसेमंद नहीं लग सकता है. साथ ही, इसे समझना मुश्किल हो सकता है. लागू करने से जुड़ी ज़रूरी जानकारी:

इसका मतलब है कि जब तक उपयोगकर्ता होम स्क्रीन आइकॉन के ज़रिए आपकी साइट पर नियमित तौर पर नहीं जाता, तब तक आपकी सूचनाएं सामान्य ब्राउज़र यूज़र इंटरफ़ेस (यूआई) में खुलेंगी.

इस समस्या पर आगे काम किया जाएगा.

यह वेब सॉकेट से बेहतर क्यों है?

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

GCM, FCM, वेब पुश, और Chrome में क्या अंतर है?

इस सवाल के कई पहलू हैं. इसे समझाने का सबसे आसान तरीका है, वेब पुश और Chrome के इतिहास को समझना. (चिंता न करें, यह छोटा है.)

दिसंबर 2014

जब Chrome ने पहली बार वेब पुश की सुविधा लागू की, तब उसने Google Cloud Messaging (GCM) का इस्तेमाल किया. इससे सर्वर से ब्राउज़र पर पुश मैसेज भेजे जा सकते थे.

यह वेब पुश नहीं था. Chrome और GCM के इस शुरुआती सेट-अप के "असली" वेब पुश न होने की कुछ वजहें हैं.

  • जीसीएम का इस्तेमाल करने के लिए, डेवलपर को Google Developers Console पर एक खाता सेट अप करना होता है.
  • Chrome और GCM को एक खास सेंडर आईडी की ज़रूरत होती है. इसे वेब ऐप्लिकेशन को शेयर करना होता है, ताकि मैसेज सेवा को सही तरीके से सेट अप किया जा सके.
  • GCM के सर्वर ने एक कस्टम एपीआई अनुरोध स्वीकार किया, जो वेब स्टैंडर्ड के मुताबिक नहीं था.

जुलाई 2016

जुलाई में, वेब पुश में एक नई सुविधा जोड़ी गई - ऐप्लिकेशन सर्वर कुंजियां (या VAPID, जैसा कि इस खास जानकारी को जाना जाता है). जब Chrome ने इस नए एपीआई के लिए सहायता जोड़ी, तो उसने मैसेज सेवा के तौर पर GCM के बजाय, Firebase क्लाउड से मैसेज (इसे FCM भी कहा जाता है) का इस्तेमाल किया. यह कुछ वजहों से ज़रूरी है:

  • Chrome और ऐप्लिकेशन सर्वर कुंजियों को Google या Firebase के साथ सेट अप करने के लिए, किसी भी तरह के प्रोजेक्ट की ज़रूरत नहीं होती. यह अपने-आप काम करेगा.
  • FCM, वेब पुश प्रोटोकॉल के साथ काम करता है. यह एक ऐसा एपीआई है जो वेब पुश की सभी सेवाओं के साथ काम करेगा. इसका मतलब है कि कोई ब्राउज़र चाहे किसी भी पुश सेवा का इस्तेमाल करे, आपको बस एक ही तरह का अनुरोध करना होगा और वह मैसेज भेज देगा.

आज यह भ्रमित करने वाला क्यों है?

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

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

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

Firebase में JavaScript SDK टूल मौजूद है. क्या और क्यों?

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

मैसेजिंग SDK टूल (इसे Firebase क्लाउड से मैसेज JS SDK टूल के नाम से जाना जाता है) पर्दे के पीछे कुछ तरकीबें अपनाता है, ताकि वेब पुश को लागू करना आसान हो सके.

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

यह पर्दे के पीछे वेब पुश का इस्तेमाल करता है. हालांकि, इसका मकसद इसे छिपाना है.

जैसा कि मैंने पिछले सवाल में बताया था, अगर वेब पुश को सिर्फ़ एक ब्राउज़र और पुश सेवा के तौर पर देखा जाए, तो Firebase में मौजूद Messaging SDK को एक लाइब्रेरी के तौर पर देखा जा सकता है. इससे वेब पुश को लागू करना आसान हो जाता है.

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

कोड लैब