This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The Bluetooth.requestDevice()
method of the Bluetooth
interface returns a Promise
to a BluetoothDevice
object with the specified options. If there is no chooser UI, this method returns the first device matching the criteria.
Syntax
Bluetooth.requestDevice([options]) .then(function(bluetoothDevice) { ... })
Returns
A Promise
to a BluetoothDevice
object.
Parameters
- options Optional
- An object that sets options for the device request. The available options are:
filters[]
: An array ofBluetoothScanFilters
. This filter consists of an array ofBluetoothServiceUUID
s, aname
parameter, and anamePrefix
parameter.optionalServices[]
: An array ofBluetoothServiceUUID
s.acceptAllDevices
: ABoolean
indicating that the requesting script can accept all Bluetooth devices. The default isfalse
.
Example
// 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(function(device) { console.log('Name: ' + device.name); // Do something with the device. }) .catch(function(error) { console.log("Something went wrong. " + error); });
Detailed examples are in the specification.
Specifications
Specification | Status | Comment |
---|---|---|
Web Bluetooth The definition of 'requestDevice()' in that specification. |
Draft | Initial definition. |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 56[1] | 43[1] |
Feature | Android Webview | Chrome for Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | No support | 56[1] | 43[1] |
[1] Before Chrome 59 and Opera 46, the options parameter was required.