Web Bluetooth APIが登場して数年経ち、そろそろ利用できるかと思って試用してみました。ブラウザから周辺にあるBluetooth機器の一覧を取得できないかと考えましたが、現在の作りでは実現ができなさそうだということがわかりました。 実際に試した内容は次のようになります。 まず、次のようにJavaScriptに書き実行しました。
function findBleDevices() { if (navigator.bluetooth) { navigator.bluetooth.requestDevice({acceptAllDevices:true}) .then(function(device) { console.log(device); }) .catch(function(err) { console.log(err); }); } } findBleDevices();
ここで、「DOMException: Must be handling a user gesture to show a permission request.」というエラーが発生しました。 これはブラウザを表示するとコードが実行されるようにしたことが原因でした。ページを表示した後にボタンを押すなどのアクションをユーザが行ったらコードが実行できるようにすることで解決します。 プログラムが実行された時、ブラウザのアドレスバーにダイアログが現れます。そして、Bluetoothデバイスを検索し始めます。
雑感
想定では、ページを表示した時に周囲にあるBluetooth機器を検索し、そこにあるデバイス一覧に応じてページの表示内容を変えようとしていました。しかし、「ユーザのアクションが必要な点」、「ダイアログが表示される点」が想定と異なるため、今回は利用を見送ることにしました。
参考情報