---
title: Bluetooth.requestDevice()
slug: Web/API/Bluetooth/requestDevice
tags:
  - API
  - Web蓝牙
  - 蓝牙
translation_of: Web/API/Bluetooth/requestDevice
---
<p>{{APIRef()}}{{SeeCompatTable}}</p>

<p>{{domxref("Bluetooth")}}接口的<strong><code>Bluetooth.requestDevice()</code></strong>方法返回一个带有对应options的{{domxref("BluetoothDevice")}}对象的{{jsxref("Promise")}}对象. 如果没有蓝牙设备选择界面,则此方法返回与条件匹配的第一个设备。</p>

<h2 id="语法">语法</h2>

<pre class="syntaxbox">Bluetooth.requestDevice(options).then(function(bluetoothDevice) { ... })</pre>

<h3 id="返回值">返回值</h3>

<p>带有{{domxref("BluetoothDevice")}} 对象的{{jsxref("Promise")}} 对象.</p>

<h3 id="参数">参数</h3>

<dl>
 <dt>options </dt>
 <dd>设置设备请求选项的对象. 可用的选项是:
 <ul>
  <li><code>filters[]</code>: 一个BluetoothScanFilters数组。 此过滤器由一个BluetoothServiceUUID数组,一个名称参数和一个namePrefix参数组成。</li>
  <li><code>optionalServices[]</code>: 一个BluetoothServiceUUID数组。</li>
  <li><code>acceptAllDevices</code>: boolean 表示请求脚本可以接受所有蓝牙设备。 默认值为false。</li>
 </ul>
 </dd>
</dl>

<h2 id="示例">示例</h2>

<pre><code>//扫描选项匹配任何设备广播:

//. 标准心率服务。

//. 两个16位服务ID 0x1802和0x1803。

//. 专有的128位UUID服务c48e6067-5295-48d3-8d5c-0395f61792b1。

//. 名称为“设备名”的设备。

//. 名称以“前缀”开头的设备。

//

//如果设备包含电池服务,

//即使设备不通告该服务,也可以访问电池服务。

let options = {
  filters: [
    {services: ['heart_rate']},
    {services: [0x1802, 0x1803]},
    {services: ['c48e6067-5295-48d3-8d5c-0395f61792b1']},
    {name: '设备名'},
    {namePrefix: '前缀'}
  ],
  optionalServices: ['battery_service']
}

navigator.bluetooth.requestDevice(options).then(function(device) {
  console.log('名称: ' + device.name);
  // 在此处实现设备调用
})
.catch(function(error) {
  console.log("出现错误: " + error);
});</code></pre>

<p>查看<a href="https://webbluetoothcg.github.io/web-bluetooth/#example-filter-by-services">详细示例</a> </p>

<h2 id="规范">规范</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">规范</th>
   <th scope="col">状态</th>
   <th scope="col">说明</th>
  </tr>
  <tr>
   <td>{{SpecName('Web Bluetooth', '#dom-bluetooth-requestdevice', 'requestDevice()')}}</td>
   <td>{{Spec2('Web Bluetooth')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="浏览器兼容性">浏览器兼容性</h2>

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatChrome (56)}}</td>
   <td> </td>
   <td> </td>
   <td>{{CompatOpera(43)}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android Webview</th>
   <th>Chrome for Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>Firefox OS</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatChrome (56)}}</td>
   <td> </td>
   <td> </td>
   <td> </td>
   <td>{{CompatOperaMobile(43)}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>
</div>