Windows, Linux, MacOS의 Chrome 102 이후 Chrome 앱 지원이 중단됩니다. ChromeOS의 경우 Chrome 앱은 최소 2025년 1월까지 지원되지만 Chrome 앱은 지원 중단될 예정이므로 웹 앱으로 이전하는 것이 좋습니다. 이전에는 Chrome 앱이 키오스크 모드에서 웹 앱만으로는 현재 지원되지 않는 추가 기능을 사용할 수 있었습니다. 키오스크 웹 애플리케이션과 함께 호환 확장 프로그램을 배포하면 이러한 기능을 계속 사용할 수 있습니다.
확장 프로그램은 어떻게 배포되나요?
확장 프로그램은 키오스크 구성 화면 (Devices > Chrome > Apps & Extensions > Kiosks로 이동)의 Chrome 관리 콘솔을 통해 배포됩니다. 확장 프로그램은 공개적으로 액세스할 수 있는 링크에서 자체 호스팅하거나 Chrome 웹 스토어에서 호스팅할 수 있습니다. 기업 또는 교육 환경에서 확장 프로그램을 관리하는 방법에 관한 자세한 내용은 이 문서를 참고하세요.
웹 앱에서 확장 프로그램 API를 호출하려면 어떻게 해야 하나요?
키오스크 웹 앱과 함께 호환 확장 프로그램을 배포할 수 있으므로 확장 프로그램 API를 호출하여 기기 및 하드웨어 플랫폼에 관한 유용한 정보를 가져오거나 Chrome 접근성 기능을 관리하는 등의 작업을 실행하여 확장 프로그램 기능을 활용할 수 있습니다.
키오스크 전용 API를 사용하는 경우 매니페스트에서 사용 설정해야 합니다. 그런 다음 키오스크 웹 앱과 동반자 확장 프로그램이 서로 통신할 수 있도록 메시지 전달을 구현합니다.
키오스크 전용 확장 프로그램 API 사용 설정
키오스크 모드에서만 사용할 수 있는 확장 프로그램 API가 있습니다. 확장 프로그램이 이러한 키오스크 전용 API를 호출하려면 매니페스트에 "kiosk_enabled" 필드를 추가하고 true로 설정해야 합니다.
{ "manifest_version": 3, "version": "1.0", ... "kiosk_enabled": true }
메시지 전달 구현
확장 프로그램 설정
웹 앱에서 메시지를 수신하고 이에 응답하려면 클라이언트 (웹 앱)에서 도착하는 메시지를 수신 대기한 다음 해당 요청을 상응하는 API 호출로 프록시하는 백그라운드 스크립트를 노출해야 합니다. 다음 예에서는 웹 앱이 callRestart의 methodName를 포함하는 맞춤 메시지 객체를 전송할 때 ChromeOS 기기를 다시 시작하도록 요청이 프록시됩니다.
// 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/" ] } }
웹 앱 설정
웹 앱에서 확장 프로그램을 호출하려면 고정 확장 프로그램 ID를 알아야 합니다. 이 ID는 Chrome 확장 프로그램을 설치할 때 표시되는 chrome://extensions 페이지에서 찾을 수 있으며, 확장 프로그램을 업로드한 후에는 Chrome 웹 스토어에서도 확인할 수 있습니다. 이를 통해 웹 앱은 통신하려는 정확한 확장 프로그램을 지정할 수 있습니다. 그런 다음 chrome.runtime.sendMessage를 호출하고 확장 프로그램에 전송할 메시지와 함께 확장 프로그램 ID를 전달합니다.
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 섹션에 나열된 도메인의 메시지만 수신하려고 시도합니다. 마찬가지로 웹 앱은 통신하려는 확장 프로그램의 고정 ID를 알아야 합니다.