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

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

स्कीम (यानी प्रोटोकॉल) के बारे में जानकारी

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

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

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

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

सिर्फ़ सुरक्षित कॉन्टेंट के लिए उपलब्ध 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 है.

प्रोटोकॉल हैंडलिंग क्या है

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

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

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

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

Application > Manifest पैनल का इस्तेमाल करके, Protocol Handlers सेक्शन पर जाएं. यहां उपलब्ध सभी प्रोटोकॉल देखे और टेस्ट किए जा सकते हैं.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Acknowledgements

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