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ć.