Bluetooth: requestDevice()-Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die Bluetooth.requestDevice()-Methode der Bluetooth-Schnittstelle gibt ein Promise zurück, das mit einem BluetoothDevice erfüllt wird, das den angegebenen Optionen entspricht. Wenn keine Auswahl-UI vorhanden ist, gibt diese Methode das erste Gerät zurück, das den Kriterien entspricht.

Syntax

js
requestDevice()
requestDevice(options)

Parameter

options Optional

Ein Objekt, das Optionen für die Auswahl eines geeigneten Geräts festlegt. Die verfügbaren Optionen sind:

filters Optional

Ein Array von Filterobjekten, das die Eigenschaften von Geräten angibt, die übereinstimmen müssen. Um mit einem Filterobjekt übereinzustimmen, muss ein Gerät alle Werte des Filters erfüllen: alle angegebenen services, name, namePrefix usw.

Jeder Filter besteht aus einem Array von Objekten mit den folgenden Eigenschaften:

services Optional

Ein Array von Werten, das die Bluetooth-GATT-Dienste (Generic Attribute Profile) angibt, die ein Bluetooth-Gerät unterstützen muss. Jeder Wert kann ein gültiger Name aus der GATT-zugewiesene Diensteliste sein, wie 'battery_service' oder 'blood_pressure'. Sie können auch eine vollständige Dienst-UUID wie '0000180F-0000-1000-8000-00805f9b34fb' oder das kurze 16-Bit (0x180F) oder 32-Bit-Alias angeben. Beachten Sie, dass dies dieselben Werte sind, die an BluetoothUUID.getService() übergeben werden können.

name Optional

Ein String, der den genauen Namen des Geräts enthält, mit dem abgeglichen werden soll.

namePrefix Optional

Ein String, der das Namenspräfix enthält, mit dem abgeglichen werden soll. Alle Geräte, deren Name mit diesem String beginnt, werden abgeglichen.

manufacturerData Optional

Ein Array von Objekten, das mit Herstellerdaten in den Bluetooth Low Energy (BLE) Werbepaketen übereinstimmt. Jedes Filterobjekt hat die folgenden Eigenschaften:

companyIdentifier

Eine obligatorische Zahl, die den Hersteller des Geräts identifiziert. Unternehmenskennungen sind in der Bluetooth-Spezifikation Zugewiesene Nummern, Abschnitt 7, aufgeführt. Zum Beispiel, um mit Geräten abzugleichen, die von "Digianswer A/S" hergestellt wurden, mit der zugewiesenen Hex-Zahl 0x000C, würden Sie 12 angeben.

dataPrefix Optional

Das Datenpräfix. Ein Puffer mit Werten, die mit den Werten am Anfang der Werbe-Herstellerdaten abgeglichen werden sollen.

mask Optional

Damit können Sie mit Bytes aus den Herstellerdaten abgleichen, indem einige Bytes der Service-Daten dataPrefix maskiert werden.

serviceData Optional

Ein Array von Objekten, das mit Servicedaten in den Bluetooth Low Energy (BLE) Werbepaketen übereinstimmt. Jedes Filterobjekt hat die folgenden Eigenschaften:

service

Der GATT-Dienstname, die Dienst-UUID oder die UUID-16-Bit- oder 32-Bit-Form. Dies nimmt dieselben Werte an wie die Elemente des services-Arrays.

dataPrefix Optional

Das Datenpräfix. Ein Puffer mit Werten, die mit den Werten am Anfang der Werbe-Servicedaten abgeglichen werden sollen.

mask Optional

Damit können Sie mit Bytes aus den Servicedaten abgleichen, indem einige Bytes der Service-Daten dataPrefix maskiert werden.

exclusionFilters Optional

Ein Array von Filterobjekten, das die Eigenschaften von Geräten angibt, die vom Abgleich ausgeschlossen werden. Die Eigenschaften der Array-Elemente sind dieselben wie für filters.

optionalServices Optional

Ein Array optionaler Dienstkennungen.

Die Kennungen nehmen dieselben Werte an wie die Elemente des services-Arrays (ein GATT-Dienstname, Dienst-UUID oder UUID 16-Bit- oder 32-Bit-Form).

optionalManufacturerData Optional

Ein optionales Array von Herstellercodes als Ganzzahlen. Dies nimmt dieselben Werte an wie companyIdentifier.

Die Daten werden nicht zum Filtern der Geräte verwendet, aber Anzeigen, die mit dem angegebenen Set übereinstimmen, werden dennoch in advertisementreceived-Ereignissen geliefert. Dies ist nützlich, da es ermöglicht, ein Interesse an empfangenen Daten von Bluetooth-Geräten ohne Einschränkung des Filters anzugeben, der steuert, welche Geräte dem Benutzer in der Berechtigungsabfrage präsentiert werden.

acceptAllDevices Optional

Ein boolescher Wert, der angibt, dass das anfordernde Skript alle Bluetooth-Geräte akzeptieren kann. Der Standard ist false.

Diese Option ist geeignet, wenn Geräte nicht genügend Informationen bereitgestellt haben, um das Filtern nützlich zu machen. Wenn acceptAllDevices auf true gesetzt ist, sollten Sie alle filters und exclusionFilters weglassen und Sie müssen optionalServices festlegen, um das zurückgegebene Gerät nutzen zu können.

Nachdem der Benutzer ein Gerät zur Kopplung im aktuellen Ursprung ausgewählt hat, ist der Zugriff nur auf Dienste gestattet, deren UUID in der Dienstliste eines Elements von filters.services oder in optionalServices aufgeführt war. Daher ist es wichtig, die erforderlichen Dienste aufzulisten. Insbesondere, wenn Sie nur mit name filtern, müssen Sie auch die gewünschten Dienste in optionalServices angeben.

Hinweis: Obwohl das options-Argument technisch optional ist, müssen Sie, um Ergebnisse zu erhalten, entweder einen Wert für filters festlegen oder acceptAllDevices auf true setzen.

Rückgabewert

Ein Promise zu einem BluetoothDevice-Objekt.

Ausnahmen

TypeError

Wird ausgelöst, wenn die bereitgestellten options keinen Sinn ergeben. Beispielsweise, wenn options.filters vorhanden ist und options.acceptAllDevices true ist, options.filters nicht vorhanden ist und options.acceptAllDevices false ist oder options.filters [] ist.

NotFoundError DOMException

Wird ausgelöst, wenn es kein Bluetooth-Gerät gibt, das den angegebenen Optionen entspricht.

SecurityError DOMException

Wird ausgelöst, wenn dieser Vorgang in diesem Kontext aufgrund von Sicherheitsbedenken nicht gestattet ist, z. B. wenn er von einem unsicheren Ursprung aufgerufen wird.

Beispiele

js
// Discovery options match any devices advertising:
// - The standard heart rate service.
// - Both 16-bit service IDs 0x1802 and 0x1803.
// - A proprietary 128-bit UUID service c48e6067-5295-48d3-8d5c-0395f61792b1.
// - Devices with name "ExampleName".
// - Devices with name starting with "Prefix".
//
// And enables access to the battery service if devices
// include it, even if devices do not advertise that service.
let options = {
  filters: [
    { services: ["heart_rate"] },
    { services: [0x1802, 0x1803] },
    { services: ["c48e6067-5295-48d3-8d5c-0395f61792b1"] },
    { name: "ExampleName" },
    { namePrefix: "Prefix" },
  ],
  optionalServices: ["battery_service"],
};

navigator.bluetooth
  .requestDevice(options)
  .then((device) => {
    console.log(`Name: ${device.name}`);
    // Do something with the device.
  })
  .catch((error) => console.error(`Something went wrong. ${error}`));

Detaillierte Beispiele finden Sie in der Spezifikation und auch in Kommunikation mit Bluetooth-Geräten über JavaScript auf developer.chrome.com.

Spezifikationen

Specification
Web Bluetooth
# dom-bluetooth-requestdevice

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch