Bluetooth: requestDevice() メソッド

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

Bluetooth インターフェイスの Bluetooth.requestDevice() メソッドは、指定のオプションに合致する BluetoothDevice オブジェクトで解決する Promise を返します。選択用の UI が無い場合は、このメソッドは基準に合致する最初のデバイスを返します。

構文

js
requestDevice()
requestDevice(options)

引数

options 省略可

デバイスの要求に関するオプションを設定するオブジェクトです。以下のオプションが利用可能です。

  • filters[]
    • BluetoothScanFilters の配列です。このフィルタは、BluetoothServiceUUID の配列、name パラメーター、namePrefix パラメーターからなります。
  • optionalServices[]
    • : BluetoothServiceUUID の配列です。
  • acceptAllDevices
    • : 要求を出しているスクリプトがすべての Bluetooth デバイスを受け入れるかを表す boolean 値です。デフォルトは false です。

返値

BluetoothDevice オブジェクトで解決する Promise を返します。

例外

TypeError

指定された options が意味をなさないとき投げられます。 たとえば、options.filters が存在して、かつ options.acceptAllDevicestrue に設定されている場合や、options.filters が存在せず、かつ options.acceptAllDevicesfalse に設定されている場合に投げられます。 options.filters[] に設定されている場合も投げられます。

NotFoundError DOMException

指定のオプションに合致する Bluetooth デバイスが存在しないとき投げられます。

SecurityError DOMException

安全でないオリジンで呼び出されたときなど、現在のコンテキストでセキュリティの懸念によりこの操作が許可されないとき投げられます。

js
// 以下のアドバタイズをしているデバイスにマッチする検索オプションを使用します。
// ・標準の心拍数サービス
// ・16 ビットのサービス ID が 0x1802 と 0x1803
// ・プロプライエタリーの 128 ビット UUID c48e6067-5295-48d3-8d5c-0395f61792b1 を持つサービス
// ・名前 "ExampleName" を持つデバイス
// ・名前が "Prefix" で始まるデバイス
//
// そして、デバイスが該当のサービスをアドバタイズしていない場合でも、
// デバイスに存在すれば、バッテリーサービスへのアクセスを有効化します。
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(`名前: ${device.name}`);
    // デバイスに何かをする
  })
  .catch((error) => console.error(`何かがうまくいきませんでした。 ${error}`));

詳細な例が仕様書にあります。

仕様書

Specification
Web Bluetooth
# dom-bluetooth-requestdevice

ブラウザーの互換性

BCD tables only load in the browser