WebUSB API, standart olmayan Universal Serial Bus (USB) uyumlu cihazları web'de gösterir. Bu sayfada, uzantılara özel API yönleri açıklanmaktadır. WebUSB API ile ilgili tüm ayrıntılar için MDN'ye bakın.
Uzantılarda kullanılabilirlik
Chrome 118 veya sonraki sürümler.
İzinler
Manifest dosyası izinleri gerekli değildir, ancak WebUSB, tarayıcının kullanıcı izni akışını tetikler.
Manifest
Bu API için manifest anahtarı gerekmez.
Destekleyici bağlamlar
Bu API hemen hemen her bağlamda kullanılabilir. WebUSB.requestDevice()
yöntemi, uzantı Service Worker'larda kullanılamaz. Ayrıntılar için sonraki bölüme bakabilirsiniz.
Bu API bir uzantı hizmet çalışanında kullanıldığında, cihazların bağlantı oturumu hizmet çalışanının aktif kalmasını sağlar.
Chrome uzantısı farklılıkları
WebUSB, uzantı hizmeti çalışanları tarafından kullanılabilir ancak USBDevice örneğiyle çözümlenen bir vaat döndüren WebUSB.requestDevice()
, uzantı hizmeti çalışanında çağrılamaz. Bu sorunu gidermek için uzantı hizmet çalışanı dışında bir uzantı sayfasından requestDevice()
numaralı telefonu arayın ve uzantı hizmet çalışanına bir mesaj gönderin.
Aşağıdaki kod, kullanıcı hareketi gerektiren bir izin akışının parçası olarak requestDevice()
yöntemini çağırarak tipik bir kalıbı izler. Cihaz edinildiğinde Service Worker'a bir mesaj gönderilir ve daha sonra hizmet çalışanı getDevices()
ile cihazı alabilir.
popup.js:
myButton.addEventListener("click", async () => {
await navigator.usb.requestDevice({
filters: [{ vendorId: 0x1234, productId: 0x5678 }],
});
chrome.runtime.sendMessage("newDevice");
});
service-worker.js
chrome.runtime.onMessage.addListener(async (message) => {
if (message === "newDevice") {
const devices = await navigator.usb.getDevices();
for (const device of devices) {
// open device connection.
await device.open();
}
}
});