Googlebook OS là một hệ điều hành dành cho các thiết bị Googlebook, được xây dựng dựa trên ngăn xếp công nghệ Android và kết hợp với các nền tảng máy tính từ ChromeOS. Google Sách hỗ trợ cùng một nền tảng WebExtensions có trên Windows, macOS và ChromeOS, nhưng có một số điểm khác biệt về cách nền tảng này chạy trên các hệ điều hành đó.
- Tính năng phát hiện nền tảng hiếm khi cần thiết, nhưng các quy trình kiểm tra hiện có có thể hoạt động sai do các API tiện ích báo cáo
androidtrong khi tác nhân người dùng báo cáo ChromeOS. - Tính năng nhắn tin gốc hiện chưa có, nhưng chúng tôi đang nỗ lực phát triển tính năng này. Dự kiến nó sẽ định tuyến các thông báo đến một ứng dụng Android đã cài đặt thay vì một tệp thực thi trên máy tính.
- Phím tắt sử dụng các tổ hợp phím Linux thay vì các mục
chromeos. SharedArrayBufferyêu cầu chọn sử dụng chế độ tách biệt nhiều nguồn gốc và phải chạy trong một trang tiện ích hoặc tài liệu ngoài màn hình thay vì trình chạy dịch vụ.- Các API chỉ dành cho ChromeOS không được hỗ trợ trên Googlebook OS, mặc dù tác nhân người dùng báo cáo
Chrome OS. Những tiện ích khai báo các quyền này vẫn cài đặt, nhưng các không gian tên API làundefinedtrong thời gian chạy. browser.system.storagekhông được hỗ trợ trên Googlebook OS, vì vậy, không gian tên API làundefinedtrong thời gian chạy.
Phát hiện nền tảng
Hầu hết các tiện ích đều không cần phát hiện hệ điều hành Googlebook. Hãy làm theo các phương pháp hay nhất tiêu chuẩn về phát triển web, chẳng hạn như phát hiện tính năng và thiết kế thích ứng, thay vì kiểm tra xem trình duyệt đang chạy trên hệ điều hành nào.
Nếu tiện ích của bạn đã kiểm tra hệ điều hành, thì các API tiện ích và tác nhân người dùng sẽ trả về các nền tảng khác nhau trên Googlebook OS.
chrome.runtime.getPlatformInfo().ostrả về'android'. Nếu tiện ích của bạn dùng chung mã với trình duyệt di động và giả định rằng'android'có nghĩa là điện thoại, thì người dùng Googlebook sẽ thấy giao diện người dùng di động của bạn trên máy tính xách tay.navigator.userAgentchứaCrOS. Đối với bố cục trang chung, việc kết hợp với Chromebook sẽ hiệu quả. Tuy nhiên,navigator.userAgentData.platformsẽ trả về'Android'và nếu tiện ích của bạn kiểm tra tác nhân người dùng để hiện các gợi ý về phím tắt ChromeOS (chẳng hạn như phímSearch) hoặc để gọi các API chỉ dành cho ChromeOS, thì những lượt kiểm tra đó sẽ không hoạt động trên Googlebook.
Bảng sau đây so sánh các tín hiệu này trên nhiều nền tảng.
| Tín hiệu | Hệ điều hành Googlebook | Điện thoại Android | Chromebook | Windows, macOS, Linux |
|---|---|---|---|---|
runtime.getPlatformInfo().os |
android |
android |
cros |
mac, win, linux |
navigator.userAgentData.platform |
Android |
Android |
Chrome OS |
Windows, macOS, Linux |
navigator.userAgentData.mobile |
false |
true |
false |
false |
Ngược lại, navigator.userAgent trả về một chuỗi tác nhân người dùng rút gọn giống hệt nhau trên cả Googlebook OS và ChromeOS, vì cả hai nền tảng này đều báo cáo mã thông báo nền tảng X11; CrOS x86_64
14541.0.0 cố định.
// Googlebook OS
Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36
// ChromeOS
Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36
Giống như mọi hoạt động phát triển web, việc phát hiện nền tảng có thể không đáng tin cậy, vì vậy, bạn chỉ nên sử dụng tính năng này khi không thể dùng tính năng phát hiện để kiểm thử trực tiếp những gì bạn cần. Nếu cần phân biệt Googlebook OS với cả điện thoại Android và Chromebook, bạn có thể kết hợp runtime.getPlatformInfo() với gợi ý mobile từ Gợi ý về ứng dụng User-Agent.
async function getPlatform() {
const { os, arch } = await chrome.runtime.getPlatformInfo();
// userAgentData is undefined in browsers that don't implement User-Agent
// Client Hints, so read mobile defensively.
const mobile = navigator.userAgentData?.mobile;
return {
os,
arch,
isGooglebook: os === 'android' && mobile === false,
isPhone: os === 'android' && mobile !== false
};
}
Mặc dù sự kết hợp cụ thể này của các phép so sánh chuỗi chỉ ra một cách duy nhất các thiết bị chạy Googlebook OS tại thời điểm ra mắt sản phẩm, nhưng điều đó có thể không phải lúc nào cũng đúng. Khi ngày càng có nhiều thiết bị được xuất xưởng theo thời gian, trong nhiều hệ số hình thức, có thể sẽ có lúc một số thiết bị chạy Googlebook OS không khớp với quá trình phát hiện đó.
Để phát hiện Googlebooks từ các trang web hoặc trên máy chủ bằng cách sử dụng gợi ý về ứng dụng, hãy xem phần Xác định Googlebooks.
Nhắn tin gốc
Tính năng nhắn tin gốc hiện chưa có trên hệ điều hành Googlebook OS, nhưng chúng tôi đang nỗ lực để sớm ra mắt tính năng này. Hãy kỳ vọng rằng Chrome sẽ có các tiện ích giao tiếp với các ứng dụng Android đã cài đặt thay vì các tệp thực thi trên máy tính cục bộ. Hiện tại, các tiện ích khai báo quyền nativeMessaging vẫn cài đặt và chạy trên Googlebook OS, nhưng các lần kết nối đều không thành công. Đảm bảo tiện ích của bạn xử lý các lỗi kết nối một cách linh hoạt và quay lại quy trình dựa trên web khi máy chủ gốc không hoạt động. Theo dõi vấn đề 555299632 để nắm bắt thông tin cập nhật.
Phím tắt
Các phím tắt commands tuân theo các quy tắc tương tự như Chrome trên Linux. Chrome đọc mục linux của suggested_key trên Googlebook OS, nên các phím tắt được xác định trong chromeos sẽ không áp dụng. Các tổ hợp phím Search cũng không hoạt động vì không có phím "Tìm kiếm" trên các thiết bị chạy Googlebook OS.
SharedArrayBuffer
Trên Windows, macOS, Linux và ChromeOS, các tiện ích có thể tự động sử dụng SharedArrayBuffer trong mọi ngữ cảnh. Trên Googlebook OS, các tiện ích phải chọn sử dụng chế độ tách biệt nhiều nguồn gốc một cách rõ ràng trong manifest.json để dùng SharedArrayBuffer.
Việc chọn sử dụng chế độ tách biệt nhiều nguồn gốc sẽ bật SharedArrayBuffer trong các tài liệu tiện ích như cửa sổ bật lên, trang tuỳ chọn và tài liệu ngoài màn hình. Tuy nhiên, tính năng này không bật SharedArrayBuffer trong trình chạy dịch vụ của tiện ích vì Chrome chưa hỗ trợ tính năng cách ly nhiều nguồn gốc cho trình chạy dịch vụ (vấn đề 40150182). Nếu logic nền của bạn dựa vào SharedArrayBuffer (ví dụ: để chạy WebAssembly theo luồng), hãy chạy mã đó trong một tài liệu ngoài màn hình thay vì trình chạy dịch vụ.
API chỉ dành cho ChromeOS
Các API được đánh dấu là Chỉ dành cho ChromeOS trong tài liệu tham khảo API Tiện ích Chrome (chẳng hạn như documentScan, fileSystemProvider, vpnProvider và printing) không được hỗ trợ trên Googlebook OS, mặc dù navigator.userAgent có chứa CrOS. Các tiện ích khai báo những quyền này vẫn cài đặt và chạy, nhưng các không gian tên API là undefined trong thời gian chạy. Kiểm tra để đảm bảo không gian tên API tồn tại trước khi gọi không gian tên đó thay vì dựa vào tính năng phát hiện tác nhân người dùng.
browser.system.storage
API browser.system.storage không được hỗ trợ trên Googlebook OS. Các tiện ích khai báo quyền system.storage trong manifest.json vẫn cài đặt và chạy, nhưng không gian tên là undefined trong thời gian chạy. Kiểm tra xem API có được xác định hay không trước khi gọi getInfo(), ejectDevice() hoặc đăng ký trình nghe bộ nhớ.