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
-Objekt erfüllt wird, das den angegebenen Optionen entspricht.
Wenn keine Auswahl-Benutzeroberfläche vorhanden ist, gibt diese Methode das erste Gerät zurück, das die Kriterien erfüllt.
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, die die Eigenschaften von Geräten angeben, die übereinstimmen sollen. Um mit einem Filterobjekt übereinzustimmen, muss ein Gerät mit allen Werten des Filters übereinstimmen: allen angegebenen
services
,name
,namePrefix
usw.Jeder Filter besteht aus einem Array von Objekten mit den folgenden Eigenschaften:
services
Optional-
Ein Array von Werten, die die Bluetooth GATT (Generic Attribute Profile) Dienste angeben, die ein Bluetooth-Gerät unterstützen muss. Jeder Wert kann ein gültiger Name aus der GATT-zugeordneten Diensteliste sein, wie z.B.
'battery_service'
oder'blood_pressure'
. Sie können auch eine vollständige Dienst-UUID wie'0000180F-0000-1000-8000-00805f9b34fb'
oder den kurzen 16-Bit (0x180F
) oder den 32-Bit-Alias übergeben. Beachten Sie, dass dies die gleichen Werte sind, die anBluetoothUUID.getService()
übergeben werden können. name
Optional-
Ein String, der den genauen Namen des Geräts enthält, mit dem übereingestimmt werden soll.
namePrefix
Optional-
Ein String, der das Namenspräfix enthält, das übereinstimmen soll. Alle Geräte, die einen Namen haben, der mit diesem String beginnt, werden übereinstimmen.
manufacturerData
Optional-
Ein Array von Objekten, die mit Herstellerdaten in den Bluetooth Low Energy (BLE) Werbepaketen übereinstimmen. Jedes Filterobjekt hat die folgenden Eigenschaften:
companyIdentifier
-
Eine zwingende Nummer, die den Hersteller des Geräts identifiziert. Unternehmenskennungen sind in den Bluetooth-Spezifikationen Assigned numbers, Abschnitt 7, aufgelistet. Um beispielsweise gegen Geräte zu filtern, die von "Digianswer A/S" hergestellt wurden, mit der zugewiesenen Hex-Nummer
0x000C
, würden Sie12
angeben. dataPrefix
Optional-
Das Datenpräfix. Ein Buffer, der Werte enthält, die mit den Werten zu Beginn der Herstellerdaten übereinstimmen sollen.
mask
Optional-
Damit können Sie mit Bytes innerhalb der Herstellerdaten übereinstimmen, indem einige Bytes der Servicedaten
dataPrefix
maskiert werden.
serviceData
Optional-
Ein Array von Objekten, die mit Servicedaten in den Bluetooth Low Energy (BLE) Werbepaketen übereinstimmen. Jedes Filterobjekt hat die folgenden Eigenschaften:
service
-
Der GATT-Dienstname, die Dienst-UUID oder die UUID im 16-Bit- oder 32-Bit-Format. Diese nimmt die gleichen Werte an wie die Elemente des
services
-Arrays. dataPrefix
Optional-
Das Datenpräfix. Ein Buffer, der Werte enthält, die mit den Werten zu Beginn der Servicedaten übereinstimmen sollen.
mask
Optional-
Damit können Sie mit Bytes innerhalb der Servicedaten übereinstimmen, indem einige Bytes der Servicedaten
dataPrefix
maskiert werden.
exclusionFilters
Optional-
Ein Array von Filterobjekten, die die Eigenschaften von Geräten angeben, die von der Übereinstimmung ausgeschlossen werden. Die Eigenschaften der Array-Elemente sind die gleichen wie bei
filters
. optionalServices
Optional-
Ein Array von optionalen Dienstkennungen.
Die Kennungen nehmen die gleichen Werte an wie die Elemente des
services
-Arrays (ein GATT-Dienstname, Dienst-UUID oder UUID-kurzer 16-Bit- oder 32-Bit-Form). optionalManufacturerData
Optional-
Ein optionales Array von Hersteller-Codes als ganze Zahlen. Dies nimmt die gleichen Werte an wie
companyIdentifier
.Die Daten werden nicht zum Filtern der Geräte verwendet, aber Anzeigen, die mit dem angegebenen Set übereinstimmen, werden trotzdem in
advertisementreceived
-Ereignissen geliefert. Dies ist nützlich, weil es Code erlaubt, ein Interesse an Daten, die von Bluetooth-Geräten empfangen werden, anzugeben, ohne den Filter einzuschränken, der bestimmt, welche Geräte dem Benutzer im Berechtigungs-Prompt vorgestellt werden. acceptAllDevices
Optional-
Ein boolescher Wert, der angibt, dass das anfordernde Skript alle Bluetooth-Geräte akzeptieren kann. Der Standardwert ist
false
.Diese Option ist geeignet, wenn Geräte nicht genug Informationen für ein nützliches Filtern angekündigt haben. Wenn
acceptAllDevices
auftrue
gesetzt ist, sollten Sie allefilters
undexclusionFilters
weglassen und Sie müssenoptionalServices
festlegen, um das zurückgegebene Gerät verwenden zu können.
Nachdem der Benutzer ein Gerät zum Koppeln im aktuellen Ursprung ausgewählt hat, darf es nur auf Dienste zugreifen, deren UUID in der Diensteliste in einem Element von filters.services
oder in optionalServices
aufgeführt war.
Es ist daher wichtig, die erforderlichen Dienste aufzulisten.
Insbesondere beim Filtern nur mit name
müssen Sie daran denken, auch die gewünschten Dienste in optionalServices
anzugeben.
Hinweis:
Auch wenn das Argument options
technisch optional ist, müssen Sie, um Ergebnisse zurückzugeben, entweder einen Wert für filters
setzen oder acceptAllDevices
auf true
setzen.
Rückgabewert
Ein Promise
zu einem BluetoothDevice
-Objekt.
Ausnahmen
TypeError
-
Ausgelöst, wenn die angegebenen
options
keinen Sinn ergeben. Zum Beispiel, wennoptions.filters
vorhanden ist undoptions.acceptAllDevices
true
ist,options.filters
nicht vorhanden ist undoptions.acceptAllDevices
false
ist, oderoptions.filters
[]
ist. NotFoundError
DOMException
-
Ausgelöst, wenn es kein Bluetooth-Gerät gibt, das den angegebenen Optionen entspricht.
SecurityError
DOMException
-
Ausgelöst, wenn diese Operation in diesem Kontext aufgrund von Sicherheitsbedenken nicht erlaubt ist, wie etwa einem unsicheren Ursprung.
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
Siehe auch
- Kommunikation mit Bluetooth-Geräten über JavaScript auf developer.chrome.com.