Łączenie rozszerzenia z aplikacją PWA w trybie kiosku

Aplikacje Chrome zostaną wycofane po wersji Chrome 102 w systemach Windows, Linux i MacOS. W przypadku ChromeOS aplikacje Chrome będą obsługiwane co najmniej do stycznia 2025 r., ale zdecydowanie zalecamy przejście na aplikacje internetowe, ponieważ aplikacje Chrome mają zostać wycofane. Wcześniej aplikacje Chrome miały w trybie kiosku dodatkowe funkcje, które nie są obecnie obsługiwane przez same aplikacje internetowe. Możesz nadal korzystać z niektórych z tych funkcji, wdrażając rozszerzenie towarzyszące w aplikacji internetowej kiosku.

Jak wdrażane są rozszerzenia?

Rozszerzenia są wdrażane za pomocą konsoli administracyjnej Chrome na ekranie konfiguracji kiosku (dostępnym po kliknięciu Devices > Chrome > Apps & Extensions > Kiosks). Rozszerzenia mogą być hostowane samodzielnie pod publicznie dostępnym linkiem lub w Chrome Web Store. Więcej informacji o zarządzaniu rozszerzeniami w środowisku firmowym lub edukacyjnym znajdziesz w tym dokumencie.

Jak mogę wywoływać interfejsy API rozszerzeń z poziomu aplikacji internetowej?

Ponieważ możesz wdrażać rozszerzenia towarzyszące razem z aplikacją internetową kiosku, możesz korzystać z funkcji rozszerzeń, wywołując interfejsy API rozszerzeń, aby np. uzyskiwać przydatne informacje o urządzeniu i platformie sprzętowej lub zarządzać funkcjami ułatwień dostępu w Chrome.

Jeśli zamierzasz używać interfejsów API tylko w kiosku, musisz włączyć je w pliku manifestu. Następnie zaimplementuj przekazywanie wiadomości między aplikacją internetową kiosku a rozszerzeniem towarzyszącym, aby mogły się ze sobą komunikować.

Włączanie interfejsów API rozszerzeń tylko na kioskach

Niektóre interfejsy API rozszerzeń są dostępne tylko w trybie kiosku. Aby rozszerzenie mogło wywoływać te interfejsy API dostępne tylko na kioskach, musisz dodać do manifestu pole "kiosk_enabled" i ustawić jego wartość na true:

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

Wdrażanie przekazywania wiadomości

Konfiguracja rozszerzenia

Aby otrzymywać wiadomości z aplikacji internetowej i na nie odpowiadać, musisz udostępnić skrypt działający w tle, który nasłuchuje wiadomości przychodzących od klienta (aplikacji internetowej), a następnie przekazuje te żądania do odpowiedniego wywołania interfejsu API. W poniższym przykładzie żądanie jest przekazywane w celu ponownego uruchomienia urządzenia z ChromeOS, gdy aplikacja internetowa wyśle niestandardowy obiekt wiadomości zawierający methodName o wartości callRestart.

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

Plik manifestu rozszerzenia można skonfigurować tak, aby zezwalał na zewnętrzne wywołania funkcji rozszerzenia za pomocą klucza externally_connectable, który określa, które witryny i rozszerzenia mogą wywoływać metody w rozszerzeniu. Więcej informacji o rozszerzeniach Chrome i pliku manifestu w wersji 3 znajdziesz w oficjalnej dokumentacji.

{
    "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/" ]
      }
 }

Konfigurowanie aplikacji internetowej

Aby wywołać rozszerzenie z aplikacji internetowej, musisz znać jego statyczny identyfikator. Ten identyfikator znajdziesz na stronie chrome://extensions, która wyświetla się podczas instalowania rozszerzenia Chrome, lub w Chrome Web Store po przesłaniu rozszerzenia. Dzięki temu aplikacja internetowa może określić dokładne rozszerzenie, z którym chce się komunikować. Następnie wywołaj funkcję chrome.runtime.sendMessage i przekaż identyfikator rozszerzenia wraz z wiadomością, którą chcesz wysłać do rozszerzenia.

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');

Więcej informacji o łączeniu stron internetowych z rozszerzeniami w celu przesyłania wiadomości znajdziesz w tej dokumentacji.

Uwaga: rozszerzenia i aplikacje internetowe nie mogą się ze sobą dowolnie komunikować. Rozszerzenie będzie nasłuchiwać tylko wiadomości z domen wymienionych w sekcji externally_connectable pliku manifestu. Podobnie aplikacja internetowa musi znać statyczny identyfikator rozszerzenia, z którym chce się komunikować.