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
optionsOptional-
Ein Objekt, das Optionen für die Auswahl eines geeigneten Geräts festlegt. Die verfügbaren Optionen sind:
filtersOptional-
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,namePrefixusw.Jeder Filter besteht aus einem Array von Objekten mit den folgenden Eigenschaften:
servicesOptional-
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. nameOptional-
Ein String, der den genauen Namen des Geräts enthält, mit dem übereingestimmt werden soll.
namePrefixOptional-
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.
manufacturerDataOptional-
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 Sie12angeben. dataPrefixOptional-
Das Datenpräfix. Ein Buffer, der Werte enthält, die mit den Werten zu Beginn der Herstellerdaten übereinstimmen sollen.
maskOptional-
Damit können Sie mit Bytes innerhalb der Herstellerdaten übereinstimmen, indem einige Bytes der Servicedaten
dataPrefixmaskiert werden.
serviceDataOptional-
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. dataPrefixOptional-
Das Datenpräfix. Ein Buffer, der Werte enthält, die mit den Werten zu Beginn der Servicedaten übereinstimmen sollen.
maskOptional-
Damit können Sie mit Bytes innerhalb der Servicedaten übereinstimmen, indem einige Bytes der Servicedaten
dataPrefixmaskiert werden.
exclusionFiltersOptional-
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. optionalServicesOptional-
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). optionalManufacturerDataOptional-
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. acceptAllDevicesOptional-
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
acceptAllDevicesauftruegesetzt ist, sollten Sie allefiltersundexclusionFiltersweglassen und Sie müssenoptionalServicesfestlegen, 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
optionskeinen Sinn ergeben. Zum Beispiel, wennoptions.filtersvorhanden ist undoptions.acceptAllDevicestrueist,options.filtersnicht vorhanden ist undoptions.acceptAllDevicesfalseist, oderoptions.filters[]ist. NotFoundErrorDOMException-
Ausgelöst, wenn es kein Bluetooth-Gerät gibt, das den angegebenen Optionen entspricht.
SecurityErrorDOMException-
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
Loading…
Siehe auch
- Kommunikation mit Bluetooth-Geräten über JavaScript auf developer.chrome.com.