WebUSB'yi kullan

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();
    }
  }
});