इंस्टॉल किए गए पीडब्ल्यूए को, किसी खास प्रोटोकॉल का इस्तेमाल करने वाले लिंक हैंडल करने की अनुमति दें, ताकि लोगों को बेहतर अनुभव मिल सके.
स्कीम (प्रोटोकॉल) के बारे में जानकारी
यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर (यूआरआई), वर्णों की एक ऐसी क्रमबद्ध सूची होती है जिससे किसी ऐब्स्ट्रैक्ट या फ़िज़िकल रिसोर्स की पहचान की जाती है. हर यूआरआई, स्कीम के नाम से शुरू होता है. यह नाम, उस स्कीम में आइडेंटिफ़ायर असाइन करने की खास जानकारी देता है. इस वजह से, यूआरआई सिंटैक्स एक फ़ेडरेटेड और एक्सटेंसिबल नेमिंग सिस्टम है. इसमें हर स्कीम की खास जानकारी, उस स्कीम का इस्तेमाल करने वाले आइडेंटिफ़ायर के सिंटैक्स और सिमैंटिक्स को और सीमित कर सकती है. स्कीम को प्रोटोकॉल भी कहा जाता है. स्कीम के कुछ उदाहरण यहां दिए गए हैं.
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.
इसे बेहतर तरीके से समझने के लिए, यहां फ़्लो का एक उदाहरण दिया गया है:
- कोई उपयोगकर्ता,
https://coffeeshop.example.com/पर मौजूद किसी साइट पर जाता है. यह साइट,navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s')को कॉल करती है. - कुछ समय बाद,
https://randomsite.example.com/पर जाने के दौरान, उपयोगकर्ता किसी लिंक पर क्लिक करता है. जैसे,<a href="web+coffee:latte-macchiato">All about latte macchiato</a>. - इससे ब्राउज़र, इस यूआरएल पर नेविगेट करता है:
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जैसे किसी गाने का लिंक शेयर करता है और उपयोगकर्ता उस पर क्लिक करता है, तो संगीत स्ट्रीमिंग वाला पीडब्ल्यूए, स्टैंडअलोन विंडो में अपने-आप लॉन्च हो जाएगा.
पीडब्ल्यूए के लिए, यूआरएल प्रोटोकॉल हैंडलर का रजिस्ट्रेशन इस्तेमाल करने का तरीका
यूआरएल प्रोटोकॉल हैंडलर के रजिस्ट्रेशन के लिए एपीआई, 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 में प्रोटोकॉल हैंडलर को डीबग करना
ऐप्लिकेशन > मेनिफ़ेस्ट पैनल का इस्तेमाल करके, प्रोटोकॉल हैंडलर सेक्शन पर जाएं. यहां सभी उपलब्ध प्रोटोकॉल देखे और टेस्ट किए जा सकते हैं.

सुरक्षा से जुड़ी बातें
पीडब्ल्यूए इंस्टॉल करने के लिए, कॉन्टेक्स्ट सुरक्षित होना ज़रूरी है. इसलिए, प्रोटोकॉल हैंडलिंग पर भी यह पाबंदी लागू होती है. रजिस्टर किए गए प्रोटोकॉल हैंडलर की सूची, वेब पर किसी भी तरह से नहीं दिखाई जाती. इसलिए, इसका इस्तेमाल फ़िंगरप्रिंटिंग वेक्टर के तौर पर नहीं किया जा सकता.
उपयोगकर्ता की ओर से शुरू नहीं किए गए नेविगेशन की कोशिशें
नेविगेशन की ऐसी कोशिशें जो उपयोगकर्ता की ओर से शुरू नहीं की जाती हैं, बल्कि प्रोग्रामैटिक होती हैं, उनसे ऐप्लिकेशन नहीं खुल सकते हैं. कस्टम प्रोटोकॉल यूआरएल का इस्तेमाल सिर्फ़ टॉप-लेवल ब्राउज़िंग कॉन्टेक्स्ट में किया जा सकता है. हालांकि, इसका इस्तेमाल iframe के यूआरएल के तौर पर नहीं किया जा सकता.
प्रोटोकॉल की अनुमति वाली सूची
registerProtocolHandler() की तरह, प्रोटोकॉल की एक अनुमति वाली सूची होती है. ऐप्लिकेशन, हैंडल करने के लिए रजिस्टर कर सकते हैं.
सहमति का प्रॉम्प्ट
प्रोटोकॉल को लागू करने की वजह से, पीडब्ल्यूए के पहली बार लॉन्च होने पर, उपयोगकर्ता को अनुमति का डायलॉग दिखेगा. इस डायलॉग में, ऐप्लिकेशन का नाम और ऑरिजिन दिखेगा. साथ ही, उपयोगकर्ता से पूछा जाएगा कि क्या ऐप्लिकेशन को प्रोटोकॉल से लिंक हैंडल करने की अनुमति दी जाए. अगर कोई उपयोगकर्ता, अनुमति के डायलॉग को अस्वीकार करता है, तो रजिस्टर किए गए प्रोटोकॉल हैंडलर को ऑपरेटिंग सिस्टम अनदेखा कर देगा. प्रोटोकॉल हैंडलर का रजिस्ट्रेशन रद्द करने के लिए, उपयोगकर्ता को वह पीडब्ल्यूए अनइंस्टॉल करना होगा जिसने उसे रजिस्टर किया है. अगर उपयोगकर्ता, "मेरी पसंद याद रखें" चुनता है और "अनुमति न दें" चुनता है, तो ब्राउज़र भी प्रोटोकॉल हैंडलर का रजिस्ट्रेशन रद्द कर देगा.
सुझाव/राय दें या शिकायत करें
Chromium टीम, पीडब्ल्यूए के लिए, यूआरएल प्रोटोकॉल हैंडलर के रजिस्ट्रेशन के बारे में आपके अनुभव जानना चाहती है.
हमें एपीआई के डिज़ाइन के बारे में बताएं
क्या एपीआई के बारे में कोई ऐसी बात है जो आपकी उम्मीद के मुताबिक काम नहीं करती? या क्या ऐसे तरीके या प्रॉपर्टी मौजूद नहीं हैं जिन्हें आपको अपने आइडिया को लागू करने के लिए इस्तेमाल करना है? क्या सुरक्षा मॉडल के बारे में आपका कोई सवाल या टिप्पणी है? GitHub की संबंधित रिपो में, खास जानकारी से जुड़ी समस्या की शिकायत करें या किसी मौजूदा समस्या में अपनी राय जोड़ें.
लागू करने से जुड़ी समस्या की शिकायत करना
क्या आपको Chromium को लागू करने में कोई गड़बड़ी मिली? या क्या लागू करने का तरीका, खास जानकारी से अलग है?
new.crbug.com पर जाकर, गड़बड़ी की शिकायत करें. इसमें ज़्यादा से ज़्यादा जानकारी,
गड़बड़ी को फिर से बनाने के निर्देश शामिल करें. साथ ही, UI>Browser>WebAppInstalls को कॉम्पोनेंट
बॉक्स में डालें.
एपीआई के लिए अपनी दिलचस्पी दिखाएं
क्या आप पीडब्ल्यूए के लिए, यूआरएल प्रोटोकॉल हैंडलर के रजिस्ट्रेशन का इस्तेमाल करने की योजना बना रहे हैं? सार्वजनिक तौर पर आपकी दिलचस्पी दिखाने से, Chromium टीम को सुविधाओं को प्राथमिकता देने में मदद मिलती है. साथ ही, इससे अन्य ब्राउज़र वेंडर को यह पता चलता है कि इन सुविधाओं के लिए सहायता देना कितना ज़रूरी है.
WICG Discourse थ्रेड पर शेयर करें कि आपने इसका इस्तेमाल कैसे किया.
#ProtocolHandler
हैशटैग का इस्तेमाल करके,
@ChromiumDev को ट्वीट भेजें और हमें बताएं कि आपने इसका इस्तेमाल कहां और कैसे किया.
मददगार लिंक
- विस्तार से जानकारी देने वाला वीडियो
- खास जानकारी का ड्राफ़्ट
- GitHub
- ChromeStatus
- Chromium में गड़बड़ी
- टीएजी की समीक्षा
- Discourse
Acknowledgements
पीडब्ल्यूए के लिए, यूआरएल प्रोटोकॉल हैंडलर का रजिस्ट्रेशन, Microsoft Edge टीम के फ़ैबियो रोचा, डिएगो गोंज़ालेज़, कॉनर मूडी, और सैमुअल टैंग ने लागू किया है और इसकी खास जानकारी दी है. इस दस्तावेज़ की समीक्षा, जो मेडली और फ़ैबियो रोचा ने की है.