Bluetooth: метод requestDevice()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментальная функция: Это экспериментальная технология.
Перед использованием в продакшене внимательно проверьте таблицу совместимости с браузерами.
Контекст защищённого подключения: Эта функция доступна только в защищённых контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Метод Bluetooth.requestDevice() интерфейса Bluetooth возвращает Promise, который выполняется с объектом BluetoothDevice, соответствующим указанным параметрам. Если интерфейс выбора отсутствует, метод возвращает первый устройство, соответствующее критериям.
Синтаксис
requestDevice() requestDevice(options)
Параметры
optionsНеобязательный-
Объект, задающий параметры выбора подходящего устройства. Доступные параметры:
filtersНеобязательный-
Массив объектов фильтров, указывающих свойства устройств, которые будут соответствовать. Для соответствия объекту фильтра устройство должно соответствовать всем значениям фильтра: все его указанные
services,name,namePrefix, и так далее.Каждый фильтр состоит из массива объектов со следующими свойствами:
servicesНеобязательный-
Массив значений, указывающих Bluetooth GATT (Профиль общих атрибутов) сервисы, которые должно поддерживать Bluetooth-устройство. Каждое значение может быть допустимым именем из списка назначенных сервисов GATT, например,
'battery_service'или'blood_pressure'. Также можно передать полное UUID сервиса, например,'0000180F-0000-1000-8000-00805f9b34fb'или короткий 16-битный (0x180F) или 32-битный псевдоним. Обратите внимание, что это те же значения, которые можно передать вBluetoothUUID.getService(). nameНеобязательный-
Строка, содержащая точное имя устройства для сопоставления.
namePrefixНеобязательный-
Строка, содержащая префикс имени для сопоставления. Все устройства, у которых имя начинается с этой строки, будут сопоставлены.
manufacturerDataНеобязательный-
Массив объектов, соответствующих данным производителя в рекламных пакетах Bluetooth Low Energy (BLE). Каждый объект фильтра имеет следующие свойства:
companyIdentifier-
Обязательное число, идентифицирующее производителя устройства. Идентификаторы компаний перечислены в спецификации Bluetooth Назначенные номера, раздел 7. Например, чтобы сопоставить устройства, произведённые компанией "Digianswer A/S" с присвоенным шестнадцатеричным номером
0x000C, укажите12. dataPrefixНеобязательный-
Префикс данных. Буфер, содержащий значения для сопоставления с начальными значениями рекламных данных производителя.
maskНеобязательный-
Это позволяет сопоставлять байты внутри данных производителя, маскируя некоторые байты данных сервиса
dataPrefix.
serviceDataНеобязательный-
Массив объектов, соответствующих данным сервиса в рекламных пакетах Bluetooth Low Energy (BLE). Каждый объект фильтра имеет следующие свойства:
service-
Имя сервиса GATT, UUID сервиса или UUID в 16-битном или 32-битном формате. Это принимает те же значения, что и элементы массива
services. dataPrefixНеобязательный-
Префикс данных. Буфер, содержащий значения для сопоставления с начальными значениями рекламных данных сервиса.
maskНеобязательный-
Это позволяет сопоставлять байты внутри данных сервиса, маскируя некоторые байты данных сервиса
dataPrefix.
exclusionFiltersНеобязательный-
Массив объектов фильтров, указывающих характеристики устройств, которые будут исключены из сопоставления. Свойства элементов массива такие же, как у
filters. optionalServicesНеобязательный-
Массив идентификаторов необязательных сервисов.
Идентификаторы принимают те же значения, что и элементы массива
services(название сервиса GATT, UUID сервиса или UUID в коротких 16-битном или 32-битном формате). optionalManufacturerDataНеобязательный-
Необязательный массив целочисленных кодов производителей. Принимает те же значения, что и
companyIdentifier.Данные не используются для фильтрации устройств, но рекламные объявления, соответствующие заданному набору, всё равно передаются в
advertisementreceivedсобытиях. Это полезно, потому что позволяет коду указать интерес к данным, полученным от Bluetooth-устройств, без ограничения фильтра, определяющего, какие устройства будут представлены пользователю в запросе разрешения. acceptAllDevicesНеобязательный-
Булево значение, указывающее, что запрашиваемый скрипт может принять все Bluetooth-устройства. По умолчанию
false.Этот параметр подходит, когда устройства не анонсировали достаточно информации для полезной фильтрации. Когда
acceptAllDevicesустановлено вtrueвы должны опустить всеfiltersиexclusionFilters, и вы должны установитьoptionalServices, чтобы иметь возможность использовать возвращенное устройство.
После выбора пользователем устройства для сопряжения в текущем происхождении, оно может получить доступ только к сервисам, чьи UUID были перечислены в списке сервисов в любом элементе filters.services или в optionalServices. Поэтому важно перечислить необходимые сервисы. В частности, при фильтрации только по name вы должны также указать необходимые сервисы в optionalServices.
Примечание: Хотя аргумент options технически необязательный, чтобы получить какие-либо результаты, вы должны либо задать значение для filters либо установить acceptAllDevices в true.
Возвращаемое значение
A Promise к объекту BluetoothDevice.
Исключения
TypeError-
Выбрасывается, если предоставленные
optionsне имеют смысла. Например, еслиoptions.filtersприсутствует иoptions.acceptAllDevicesравноtrue,options.filtersотсутствует, аoptions.acceptAllDevicesравноfalse, илиoptions.filtersравно[]. -
NotFoundErrorDOMException -
Выбрасывается, если нет Bluetooth-устройства, соответствующего указанным параметрам.
-
SecurityErrorDOMException -
Выбрасывается, если эта операция не разрешена в данном контексте из-за безопасности, например, если вызвана из небезопасного источника.
Примеры
// 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}`));
Подробные примеры приведены в спецификации, а также в Взаимодействие с Bluetooth-устройствами через JavaScript на developer.chrome.com.
Спецификации
| Спецификация |
|---|
| Web Bluetooth # dom-bluetooth-requestdevice |
Совместимость с браузерами
| Десктоп | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
requestDevice |
56 | 79 | Нет | 43 | Нет | 56 | Нет | 43 | Нет | 6.0 | Нет |
options_exclusionFilters_parameter |
114 | 114 | Нет | 100 | Нет | 114 | Нет | 76 | Нет | 23.0 | Нет |
options_filter_manufacturerData_parameter |
92 | 92 | Нет | 78 | Нет | 92 | Нет | 65 | Нет | 16.0 | Нет |
См. также
- Общение с устройствами Bluetooth через JavaScript на developer.chrome.com.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth/requestDevice