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, bevor Sie diese produktiv verwenden.
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
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 anBluetoothUUID.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 Sie12
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
auftrue
gesetzt ist, sollten Sie allefilters
undexclusionFilters
weglassen und Sie müssenoptionalServices
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, wennoptions.filters
vorhanden ist undoptions.acceptAllDevices
true
ist,options.filters
nicht vorhanden ist undoptions.acceptAllDevices
false
ist oderoptions.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
// 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
- Kommunikation mit Bluetooth-Geräten über JavaScript auf developer.chrome.com.