PWA के लिए, यूआरएल के प्रोटोकॉल हैंडलर का रजिस्ट्रेशन

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

स्कीम (जिसे प्रोटोकॉल भी कहा जाता है) के बारे में जानकारी

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

tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/

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

registerProtocolHandler() तरीके के बारे में जानकारी

secure-content-only Navigator तरीके registerProtocolHandler() की मदद से साइटें, खास यूआरएल स्कीम को खोलने या मैनेज करने की अपनी क्षमता रजिस्टर कर सकती हैं. इसलिए, साइटों को इस तरह से तरीके को कॉल करना होगा: navigator.registerProtocolHandler(scheme, url). दोनों पैरामीटर को इस तरह से परिभाषित किया गया है:

  • scheme: यह एक स्ट्रिंग होती है, जिसमें वह प्रोटोकॉल होता है जिसे साइट हैंडल करना चाहती है.
  • url: यह एक स्ट्रिंग होती है, जिसमें हैंडलर का यूआरएल होता है. इस यूआरएल में %s शामिल होना चाहिए. यह एक प्लेसहोल्डर है. इसे हैंडल किए जाने वाले एस्केप किए गए यूआरएल से बदल दिया जाएगा.

स्कीम, सुरक्षित सूची में शामिल स्कीम में से कोई एक होनी चाहिए. जैसे, mailto, bitcoin या magnet. इसके अलावा, यह web+ से शुरू होनी चाहिए. साथ ही, web+ प्रीफ़िक्स के बाद कम से कम एक या उससे ज़्यादा लोअरकेस वाले ASCII अक्षर होने चाहिए. उदाहरण के लिए, web+coffee.

इसे बेहतर तरीके से समझने के लिए, यहां फ़्लो का एक उदाहरण दिया गया है:

  1. उपयोगकर्ता https://coffeeshop.example.com/ पर मौजूद किसी साइट पर जाता है, जो यह कॉल करती है: navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s').
  2. बाद में, https://randomsite.example.com/ पर जाते समय, उपयोगकर्ता <a href="web+coffee:latte-macchiato">All about latte macchiato</a> जैसे किसी लिंक पर क्लिक करता है.
  3. इससे ब्राउज़र, इस यूआरएल पर रीडायरेक्ट हो जाता है: https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. इसके बाद, खोज स्ट्रिंग को यूआरएल से डिकोड किया जाता है. इससे यह ?type=web+coffee://latte-macchiato बन जाती है.

प्रोटोकॉल हैंडलिंग के बारे में जानकारी

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

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

उपयोग के उदाहरण

  • वर्ड प्रोसेसिंग वाले PWA में, किसी दस्तावेज़ में उपयोगकर्ता को web+presentations://deck2378465 जैसे प्रज़ेंटेशन का लिंक दिखता है. जब उपयोगकर्ता लिंक पर क्लिक करता है, तो प्रज़ेंटेशन PWA सही स्कोप में अपने-आप खुल जाता है और स्लाइड डेक दिखाता है.
  • किसी प्लैटफ़ॉर्म के चैट ऐप्लिकेशन में, चैट मैसेज पाने वाले व्यक्ति को magnet यूआरएल का लिंक मिलता है. लिंक पर क्लिक करने पर, इंस्टॉल किया गया टॉरेंट पीडब्ल्यूए लॉन्च हो जाता है और डाउनलोड होना शुरू हो जाता है.
  • उपयोगकर्ता ने संगीत स्ट्रीमिंग वाला PWA इंस्टॉल किया हो. जब कोई दोस्त web+music://songid=1234&time=0:13 जैसे किसी गाने का लिंक शेयर करता है और उपयोगकर्ता उस पर क्लिक करता है, तो संगीत स्ट्रीमिंग वाला PWA अपने-आप एक अलग विंडो में लॉन्च हो जाएगा.

PWA के लिए, यूआरएल के प्रोटोकॉल हैंडलर का रजिस्ट्रेशन इस्तेमाल करने का तरीका

यूआरएल के प्रोटोकॉल हैंडलर के रजिस्ट्रेशन के लिए एपीआई, navigator.registerProtocolHandler() के आधार पर बनाया गया है. इस बार, जानकारी को वेब ऐप्लिकेशन मेनिफ़ेस्ट के ज़रिए डिक्लेरेटिव तरीके से पास किया जाता है. यह जानकारी, "protocol_handlers" नाम की नई प्रॉपर्टी में पास की जाती है. यह प्रॉपर्टी, ऑब्जेक्ट का एक कलेक्शन लेती है. इसमें दो ज़रूरी कुंजियां "protocol" और "url" होती हैं. नीचे दिए गए कोड स्निपेट में, web+tea और web+coffee को रजिस्टर करने का तरीका बताया गया है. ये वैल्यू ऐसी स्ट्रिंग होती हैं जिनमें हैंडलर का यूआरएल होता है. साथ ही, इनमें एस्केप किए गए यूआरएल के लिए ज़रूरी %s प्लेसहोल्डर होता है.

{
  "protocol_handlers": [
    {
      "protocol": "web+tea",
      "url": "/tea?type=%s"
    },
    {
      "protocol": "web+coffee",
      "url": "/coffee?type=%s"
    }
  ]
}

एक ही प्रोटोकॉल के लिए रजिस्टर करने वाले कई ऐप्लिकेशन

अगर एक से ज़्यादा ऐप्लिकेशन, खुद को एक ही स्कीम के लिए हैंडलर के तौर पर रजिस्टर करते हैं, तो ऑपरेटिंग सिस्टम उपयोगकर्ता को एक पिकर दिखाएगा. इससे उपयोगकर्ता यह तय कर पाएगा कि उसे रजिस्टर किए गए हैंडलर में से किसका इस्तेमाल करना है. उदाहरण के लिए, mailto प्रोटोकॉल.

एक ही ऐप्लिकेशन, कई प्रोटोकॉल के लिए रजिस्टर कर रहा हो

ऊपर दिए गए कोड के सैंपल में दिखाया गया है कि एक ही ऐप्लिकेशन, खुद को कई प्रोटोकॉल के लिए रजिस्टर कर सकता है.

ऐप्लिकेशन के अपडेट और हैंडलर का रजिस्ट्रेशन

हैंडलर रजिस्ट्रेशन, ऐप्लिकेशन के दिए गए मेनिफ़ेस्ट के नए वर्शन के साथ सिंक किए जाते हैं. इसके दो मामले हैं:

  • नया हैंडलर जोड़ने वाला अपडेट, हैंडलर रजिस्ट्रेशन को ट्रिगर करता है. यह ऐप्लिकेशन इंस्टॉल करने से अलग होता है.
  • हैंडलर हटाने वाले अपडेट से, हैंडलर का रजिस्ट्रेशन रद्द हो जाता है. यह ऐप्लिकेशन को अनइंस्टॉल करने से अलग होता है.

DevTools में प्रोटोकॉल हैंडलर को डीबग करना

ऐप्लिकेशन > मेनिफ़ेस्ट पैनल में जाकर, प्रोटोकॉल हैंडलर सेक्शन पर जाएं. यहां उपलब्ध सभी प्रोटोकॉल देखे और टेस्ट किए जा सकते हैं.

मेनिफ़ेस्ट पैन में प्रोटोकॉल हैंडलर

सुरक्षा से जुड़ी बातें

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

उपयोगकर्ता की ओर से शुरू नहीं की गई नेविगेशन की कोशिशें

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

प्रोटोकॉल की अनुमति वाली सूची

registerProtocolHandler() की तरह ही, प्रोटोकॉल की एक अनुमति वाली सूची होती है. ऐप्लिकेशन, हैंडल करने के लिए इन प्रोटोकॉल को रजिस्टर कर सकते हैं.

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

सुझाव/राय दें या शिकायत करें

Chromium टीम, PWA के लिए यूआरएल के प्रोटोकॉल हैंडलर के रजिस्ट्रेशन से जुड़े आपके अनुभवों के बारे में जानना चाहती है.

हमें एपीआई डिज़ाइन के बारे में बताएं

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

लागू करने से जुड़ी समस्या की शिकायत करना

क्या आपको Chromium के इस्तेमाल में कोई गड़बड़ी मिली? या क्या लागू करने का तरीका, स्पेसिफ़िकेशन से अलग है? new.crbug.com पर जाकर, गड़बड़ी की रिपोर्ट करें. इसमें ज़्यादा से ज़्यादा जानकारी शामिल करें. साथ ही, गड़बड़ी को दोहराने के लिए आसान निर्देश दें. इसके अलावा, कॉम्पोनेंट बॉक्स में UI>Browser>WebAppInstalls डालें.

एपीआई के लिए सहायता दिखाना

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

WICG Discourse थ्रेड पर, हमें बताएं कि आपको इसका इस्तेमाल कैसे करना है. @ChromiumDev को ट्वीट करें. इसके लिए, हैशटैग #ProtocolHandler का इस्तेमाल करें. साथ ही, हमें बताएं कि इसका इस्तेमाल कहां और कैसे किया जा रहा है.

Acknowledgements

Microsoft Edge टीम के Fabio Rocha, Diego González, Connor Moody, और Samuel Tang ने PWA के लिए, यूआरएल के प्रोटोकॉल हैंडलर के रजिस्ट्रेशन को लागू किया और इसके बारे में बताया. इस लेख की समीक्षा जो मेडली और फ़ैबियो रोचा ने की है. Unsplash पर JJ Ying की हीरो इमेज.