कीऑस्क PWA से एक्सटेंशन कनेक्ट करना

Windows, Linux, और MacOS के लिए Chrome 102 के बाद, Chrome ऐप्लिकेशन काम नहीं करेंगे. ChromeOS के लिए, Chrome ऐप्लिकेशन कम से कम जनवरी 2025 तक काम करेंगे. हालांकि, हम वेब ऐप्लिकेशन पर माइग्रेट करने का सुझाव देते हैं, क्योंकि Chrome ऐप्लिकेशन बंद होने वाले हैं. पहले, Chrome ऐप्लिकेशन को कियॉस्क मोड में अतिरिक्त सुविधाएं मिलती थीं. हालांकि, फ़िलहाल वेब ऐप्लिकेशन के लिए ये सुविधाएं उपलब्ध नहीं हैं. कीऑस्क वेब ऐप्लिकेशन के साथ कंपैनियन एक्सटेंशन डिप्लॉय करके, इस सुविधा के कुछ फ़ंक्शन का इस्तेमाल जारी रखा जा सकता है.

एक्सटेंशन कैसे डिप्लॉय किए जाते हैं?

एक्सटेंशन को Chrome Admin Console के ज़रिए कीऑस्क कॉन्फ़िगरेशन स्क्रीन पर डिप्लॉय किया जाता है. इस स्क्रीन को Devices > Chrome > Apps & Extensions > Kiosks पर जाकर ऐक्सेस किया जा सकता है. एक्सटेंशन को सार्वजनिक तौर पर ऐक्सेस किए जा सकने वाले लिंक पर खुद होस्ट किया जा सकता है या Chrome Web Store में होस्ट किया जा सकता है. किसी एंटरप्राइज़ या शिक्षा से जुड़ी सेटिंग में एक्सटेंशन मैनेज करने के बारे में ज़्यादा जानने के लिए, कृपया यह दस्तावेज़ देखें.

मैं अपने वेब ऐप्लिकेशन से कॉल एक्सटेंशन एपीआई को कैसे कॉल करूं?

कियोस्क वेब ऐप्लिकेशन के साथ कंपैनियन एक्सटेंशन डिप्लॉय किए जा सकते हैं. इसलिए, एक्सटेंशन की सुविधाओं का फ़ायदा लिया जा सकता है. इसके लिए, एक्सटेंशन एपीआई को कॉल करें. इससे डिवाइस और हार्डवेयर प्लैटफ़ॉर्म के बारे में काम की जानकारी मिलती है या Chrome की सुलभता सुविधाओं को मैनेज किया जा सकता है.

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

सिर्फ़ कीऑस्क मोड में काम करने वाले एक्सटेंशन एपीआई चालू करें

कुछ एक्सटेंशन एपीआई सिर्फ़ कीऑस्क मोड में उपलब्ध होते हैं. अगर आपको अपने एक्सटेंशन से, सिर्फ़ कियॉस्क मोड में काम करने वाले इन एपीआई को कॉल करना है, तो आपको मेनिफ़ेस्ट में "kiosk_enabled" फ़ील्ड जोड़ना होगा और इसे true पर सेट करना होगा:

{
    "manifest_version": 3,
    "version": "1.0",
    ...
    "kiosk_enabled": true
 }

मैसेज पास करने की सुविधा लागू करना

एक्सटेंशन सेटअप करना

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

// message handler - extension code
chrome.runtime.onMessageExternal.addListener(function (request, sender, sendResponse) {
  if (request.methodName == 'callRestart') {
    chrome.runtime.restart();
  }
});

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

{
    "background": {
       "service_worker": "background.js"
    },
    "description": "This restarts your ChromeOS device. Lucky you!",
    "manifest_version": 3,
    "name": "Restart your kiosk app",
    "version": "1.0",
    "kiosk_enabled": true,
    "externally_connectable": {
         "accepts_tls_channel_id": false,
         "matches": [ "://developer.android.com/" ]
      }
 }

वेब ऐप्लिकेशन का सेटअप

वेब ऐप्लिकेशन से एक्सटेंशन को कॉल करने के लिए, आपको इसके स्टैटिक एक्सटेंशन आईडी की जानकारी होनी चाहिए. यह आईडी, chrome://extensions पेज पर देखा जा सकता है. यह पेज, Chrome एक्सटेंशन इंस्टॉल करते समय दिखता है. इसके अलावा, एक्सटेंशन अपलोड होने के बाद, इसे Chrome Web Store से भी देखा जा सकता है. इससे आपका वेब ऐप्लिकेशन, उस एक्सटेंशन के बारे में सटीक जानकारी दे पाता है जिससे उसे कम्यूनिकेट करना है. इसके बाद, chrome.runtime.sendMessage को कॉल करें और एक्सटेंशन आईडी को उस मैसेज के साथ पास करें जिसे आपको एक्सटेंशन को भेजना है.

const STATIC_EXTENSION_ID = 'abcdefghijklmnopqrstuvwxyz'; // found from chrome extensions page of chrome web store.
const callExtensionAPI = function (method) {
  chrome.runtime.sendMessage(STATIC_EXTENSION_ID, {
    methodName: method,
  });
};
callExtensionAPI('callRestart');

मैसेज पास करने के लिए, वेब पेजों को एक्सटेंशन से कनेक्ट करने के बारे में ज़्यादा जानकारी के लिए, कृपया यह दस्तावेज़ पढ़ें.

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