Các ứng dụng Chrome sẽ không được dùng nữa sau Chrome 102 cho Windows, Linux và MacOS. Đối với ChromeOS, Ứng dụng Chrome sẽ được hỗ trợ cho đến ít nhất là tháng 1 năm 2025, nhưng bạn nên di chuyển sang ứng dụng web vì Ứng dụng Chrome dự kiến sẽ ngừng hoạt động. Trước đây, các ứng dụng Chrome có thêm chức năng ở chế độ ki-ốt mà chỉ các ứng dụng web hiện không hỗ trợ. Bạn có thể tiếp tục sử dụng một số chức năng này bằng cách triển khai một tiện ích đồng hành với ứng dụng web trên ki-ốt.
Tiện ích được triển khai như thế nào?
Tiện ích được triển khai thông qua Bảng điều khiển dành cho quản trị viên Chrome trong màn hình cấu hình chế độ ki-ốt (bạn có thể truy cập bằng cách chuyển đến Devices > Chrome > Apps & Extensions > Kiosks). Tiện ích có thể được tự lưu trữ tại một đường liên kết có thể truy cập công khai hoặc bằng cách lưu trữ tiện ích trong Cửa hàng Chrome trực tuyến. Để biết thêm thông tin về cách quản lý tiện ích trong môi trường doanh nghiệp hoặc giáo dục, vui lòng tham khảo tài liệu này.
Làm cách nào để gọi các API tiện ích từ ứng dụng web của tôi?
Vì có thể triển khai các tiện ích đồng hành cùng ứng dụng web ở chế độ ki-ốt, nên bạn có thể tận dụng các chức năng của tiện ích bằng cách gọi API tiện ích để thực hiện những việc như lấy thông tin hữu ích về thiết bị và nền tảng phần cứng hoặc quản lý các tính năng hỗ trợ tiếp cận của Chrome.
Nếu sẽ sử dụng các API chỉ dành cho kiosk, bạn cần bật các API đó trong tệp kê khai. Sau đó, hãy triển khai tính năng truyền thông báo giữa ứng dụng web kiosk và tiện ích đồng hành để chúng có thể giao tiếp với nhau.
Bật các API tiện ích chỉ dành cho chế độ kiosk
Có một số API tiện ích chỉ có trong chế độ kiosk. Để tiện ích gọi các API chỉ dành cho ki-ốt này, bạn cần thêm trường "kiosk_enabled" vào tệp kê khai và đặt trường này thành true:
{ "manifest_version": 3, "version": "1.0", ... "kiosk_enabled": true }
Triển khai truyền thông báo
Thiết lập tiện ích
Để nhận và phản hồi tin nhắn từ ứng dụng web, bạn sẽ cần hiển thị một tập lệnh nền để lắng nghe tin nhắn đến từ ứng dụng khách (ứng dụng web của bạn), sau đó chuyển các yêu cầu đó đến một lệnh gọi API tương ứng. Trong ví dụ sau, một yêu cầu được chuyển qua proxy để khởi động lại thiết bị ChromeOS khi ứng dụng web gửi một đối tượng thông báo tuỳ chỉnh chứa methodName là callRestart.
// message handler - extension code chrome.runtime.onMessageExternal.addListener(function (request, sender, sendResponse) { if (request.methodName == 'callRestart') { chrome.runtime.restart(); } });
Bạn có thể định cấu hình tệp kê khai cho tiện ích để cho phép các lệnh gọi hàm bên ngoài đến tiện ích thông qua khoá externally_connectable. Khoá này chỉ định những trang web và tiện ích được phép gọi các phương thức trong tiện ích. Bạn có thể tìm thêm thông tin về tiện ích Chrome và manifest v3 trong tài liệu chính thức.
{ "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/" ] } }
Thiết lập ứng dụng web
Để gọi tiện ích từ một ứng dụng web, bạn cần biết mã nhận dạng tiện ích tĩnh của tiện ích đó. Bạn có thể tìm thấy mã nhận dạng này trên trang chrome://extensions, xuất hiện khi bạn cài đặt tiện ích Chrome hoặc trong Cửa hàng Chrome trực tuyến sau khi tiện ích được tải lên. Điều này cho phép ứng dụng web của bạn chỉ định chính xác tiện ích mà chúng muốn giao tiếp. Sau đó, hãy gọi chrome.runtime.sendMessage và truyền mã nhận dạng tiện ích cùng với thông báo mà bạn muốn gửi đến tiện ích.
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');
Để biết thêm thông tin về cách kết nối các trang web với tiện ích để truyền thông báo, vui lòng tham khảo tài liệu này.
Lưu ý: Các tiện ích và ứng dụng web không thể tuỳ ý giao tiếp với nhau. Tiện ích này sẽ chỉ cố gắng nhận tin nhắn từ các miền có trong phần externally_connectable của tệp kê khai. Tương tự, một ứng dụng web phải biết mã nhận dạng tĩnh của tiện ích mà ứng dụng đó muốn giao tiếp.