WebUSB'yi kullan

WebUSB API, standart olmayan Evrensel Seri Yol (USB) uyumlu cihazları web'e sunar. Bu sayfada, API'nin uzantılara özgü 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ı izni gerekmez ancak WebUSB, tarayıcının kullanıcı izni akışını tetikler.

Manifest

Bu API için manifest anahtarı gerekmez.

Desteklenen bağlamlar

Bu API neredeyse her bağlamda kullanılabilir. WebUSB.requestDevice() yöntemi, uzantı hizmeti çalışanlarında kullanılamaz. Ayrıntılar için sonraki bölüme bakabilirsiniz.

Bu API bir uzantı hizmeti çalışanı içinde kullanıldığında, cihaz bağlantı oturumu hizmet çalışanını etkin tutar.

Chrome uzantısı farklılıkları

WebUSB, uzantı hizmeti çalışanlarında kullanılabilse de WebUSB.requestDevice() (USBDevice örneğiyle çözümlenen bir söz döndüren) uzantı hizmeti çalışanında çağrılamaz. Bu sorunu çözmek için requestDevice() işlevini uzantı hizmeti çalışanı dışında bir uzantı sayfasından çağırın ve uzantı hizmeti çalışanına bir mesaj gönderin.

Aşağıdaki kod, kullanıcı hareketi gerektiren bir izin akışının parçası olarak requestDevice() çağırarak tipik bir kalıbı izler. Cihaz edinildiğinde hizmet çalışanına bir mesaj gönderilir. Bu mesaj, getDevices() kullanılarak 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();
    }
  }
});