यह कंट्रोल करें कि आपका ऐप्लिकेशन कैसे लॉन्च किया जाता है.
लॉन्च हैंडलर एपीआई की मदद से, यह कंट्रोल किया जा सकता है कि आपका ऐप्लिकेशन कैसे लॉन्च किया जाए. उदाहरण के लिए, यह तय किया जा सकता है कि ऐप्लिकेशन किसी मौजूदा विंडो का इस्तेमाल करे या नई विंडो का. साथ ही, यह भी तय किया जा सकता है कि चुनी गई विंडो को लॉन्च यूआरएल पर ले जाया जाए या नहीं. फ़ाइल मैनेज करने वाले एपीआई की तरह, यह भी लॉन्च किए गए पेज के window.launchQueue में LaunchParams ऑब्जेक्ट को कतार में लगाता है.
मौजूदा स्थिति
| चरण | स्थिति |
|---|---|
| 1. एक्सप्लेनर बनाना | पूरा हो गया |
| 2. स्पेसिफ़िकेशन का शुरुआती ड्राफ़्ट बनाना | पूरा हो गया |
| 3. सुझाव/राय पाना और डिज़ाइन को बेहतर बनाना | पूरा हुआ |
| 4. ऑरिजिन ट्रायल. | पूरा हुआ |
| 5. लॉन्च करें | पूरा हो गया |
लॉन्च हैंडलर एपीआई का इस्तेमाल करना
ब्राउज़र समर्थन
इंटरफ़ेस
लॉन्च हैंडलर एपीआई में दो नए इंटरफ़ेस तय किए गए हैं.
LaunchParams : यह एक ऐसा ऑब्जेक्ट होता है जिसमें targetURL शामिल होता है. इसे ग्राहक को मैनेज करना होता है.
LaunchQueue : यह तब तक लॉन्च नहीं होता, जब तक इसे तय किया गया उपभोक्ता हैंडल नहीं कर लेता.
launch_handler मेनिफ़ेस्ट का सदस्य
अपने ऐप्लिकेशन के लॉन्च होने के तरीके के बारे में साफ़ तौर पर बताने के लिए, अपने मेनिफ़ेस्ट में launch_handler मेनिफ़ेस्ट मेंबर जोड़ें. इसमें एक सब-फ़ील्ड होता है, जिसे client_mode कहा जाता है. इससे यह कंट्रोल किया जा सकता है कि नया या मौजूदा क्लाइंट लॉन्च किया जाना चाहिए या नहीं. साथ ही, यह भी कंट्रोल किया जा सकता है कि इस क्लाइंट को नेविगेट किया जाना चाहिए या नहीं. यहां दिए गए उदाहरण में, ऐसी फ़ाइल दिखाई गई है जिसमें उदाहरण के तौर पर वैल्यू दी गई हैं. इससे सभी लॉन्च हमेशा नए क्लाइंट पर रीडायरेक्ट होंगे.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
अगर कोई वैल्यू सेट नहीं की जाती है, तो launch_handler की डिफ़ॉल्ट वैल्यू {"client_mode": "auto"} होती है. उप-फ़ील्ड के लिए इस्तेमाल की जा सकने वाली वैल्यू ये हैं:
client_mode:navigate-new: लॉन्च के टारगेट यूआरएल को लोड करने के लिए, वेब ऐप्लिकेशन विंडो में नया ब्राउज़िंग कॉन्टेक्स्ट बनाया जाता है.navigate-existing: वेब ऐप्लिकेशन की विंडो में, हाल ही में इस्तेमाल किए गए ब्राउज़िंग कॉन्टेक्स्ट को लॉन्च के टारगेट यूआरएल पर ले जाया जाता है.focus-existing: लॉन्च को मैनेज करने के लिए, वेब ऐप्लिकेशन विंडो में हाल ही में इंटरैक्ट किए गए ब्राउज़िंग कॉन्टेक्स्ट को चुना जाता है.LaunchParamsऑब्जेक्ट को दस्तावेज़ केwindow.launchQueueमें शामिल किया जाएगा. इस ऑब्जेक्ट काtargetURL, लॉन्च यूआरएल पर सेट होगा.auto: उपयोगकर्ता एजेंट के पास यह तय करने का विकल्प होता है कि प्लैटफ़ॉर्म के लिए सबसे सही तरीका क्या है. उदाहरण के लिए, मोबाइल डिवाइसों पर सिर्फ़ एक क्लाइंट काम करता है और वेexisting-clientका इस्तेमाल करते हैं. वहीं, डेस्कटॉप डिवाइसों पर कई विंडो काम करती हैं और वे डेटा के नुकसान से बचने के लिएnavigate-newका इस्तेमाल करते हैं.
client_mode प्रॉपर्टी, वैल्यू की सूची (ऐरे) को भी स्वीकार करती है. इसमें पहली मान्य वैल्यू का इस्तेमाल किया जाएगा. ऐसा इसलिए किया गया है, ताकि मौजूदा स्पेसिफ़िकेशन में नई वैल्यू जोड़ी जा सकें. साथ ही, मौजूदा स्पेसिफ़िकेशन के साथ काम करने की सुविधा भी बनी रहे.
उदाहरण के लिए, अगर काल्पनिक वैल्यू "focus-matching-url" जोड़ी जाती है, तो साइटें "focus-matching-url" को तय करेंगी, ताकि वे उन पुराने ब्राउज़र के व्यवहार को कंट्रोल कर सकें जो "focus-matching-url" के साथ काम नहीं करते थे."client_mode": ["focus-matching-url", "navigate-existing"]
window.launchQueue का इस्तेमाल करना
नीचे दिए गए कोड में, extractSongID() फ़ंक्शन, लॉन्च के दौरान पास किए गए यूआरएल से songID को एक्सट्रैक्ट करता है. इसका इस्तेमाल, म्यूज़िक प्लेयर PWA में कोई गाना चलाने के लिए किया जाता है.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
डेमो
PWA Launch Handler Demo में, Launch Handler API का डेमो देखा जा सकता है. यह देखने के लिए कि ऐप्लिकेशन, Launch Handler API का इस्तेमाल कैसे करता है, ऐप्लिकेशन का सोर्स कोड ज़रूर देखें.
- Musicr 2.0 ऐप्लिकेशन इंस्टॉल करें.
- फ़ॉर्म के चैट ऐप्लिकेशन में खुद को एक लिंक भेजें
https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3. (ऑडियो फ़ाइल पर ले जाने वाले किसी भी यूआरएल के लिए,https://example.com/music.mp3को पसंद के मुताबिक बनाया जा सकता है. उदाहरण के लिए,https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav). - अपने चैट ऐप्लिकेशन में मौजूद लिंक पर क्लिक करें. देखें कि Musicr 2.0 कैसे खुलता है और ट्रैक कैसे चलाता है.
- चैट ऐप्लिकेशन में मौजूद लिंक पर फिर से क्लिक करें. ध्यान दें कि आपको Musicr 2.0 का दूसरा इंस्टेंस नहीं मिलेगा.
सुझाव/राय दें या शिकायत करें
Chromium टीम, Launch Handler API के साथ आपके अनुभवों के बारे में जानना चाहती है.
हमें एपीआई डिज़ाइन के बारे में बताएं
क्या एपीआई के बारे में कुछ ऐसा है जो आपकी उम्मीद के मुताबिक काम नहीं करता? इसके अलावा, क्या आपको अपने आइडिया को लागू करने के लिए, कुछ और तरीकों या प्रॉपर्टी की ज़रूरत है? क्या आपको सुरक्षा मॉडल के बारे में कोई सवाल पूछना है या कोई टिप्पणी करनी है? GitHub repo पर, स्पेसिफ़िकेशन से जुड़ी समस्या की शिकायत करें या किसी मौजूदा समस्या के बारे में अपने विचार जोड़ें.
लागू करने से जुड़ी समस्या की शिकायत करना
क्या आपको Chromium के इस्तेमाल में कोई गड़बड़ी मिली? या क्या लागू करने का तरीका, स्पेसिफ़िकेशन से अलग है?
new.crbug.com पर जाकर, गड़बड़ी की रिपोर्ट करें. इसमें ज़्यादा से ज़्यादा जानकारी शामिल करें. साथ ही, गड़बड़ी को दोहराने के निर्देश दें. इसके अलावा, कॉम्पोनेंट बॉक्स में Blink>AppManifest डालें.
एपीआई के लिए सहायता दिखाना
क्या आपको Launch Handler API का इस्तेमाल करना है? सार्वजनिक तौर पर आपकी दी गई सहायता से, Chromium टीम को सुविधाओं को प्राथमिकता देने में मदद मिलती है. साथ ही, इससे ब्राउज़र बनाने वाली अन्य कंपनियों को यह पता चलता है कि इन सुविधाओं को सपोर्ट करना कितना ज़रूरी है.
@ChromiumDev को ट्वीट करें. इसके लिए, हैशटैग #LaunchHandler का इस्तेमाल करें. साथ ही, हमें बताएं कि इसका इस्तेमाल कहां और कैसे किया जा रहा है.