デバイス連携権限プロンプトあり判定中...
Web Bluetooth API
BLE(Bluetooth Low Energy)デバイスへブラウザから接続し、GATTサービスの読み書きができるAPI。
1対応判定
| ブラウザ | 対応バージョン |
|---|---|
| Chrome | 56+ |
| Firefox | 未対応 |
| Safari | 未対応 |
備考: Chromium限定
2権限フロー
権限不要
API呼び出しだけで動く。プロンプトも操作起点の縛りもない
ユーザージェスチャー必須
ボタンクリック等のユーザー操作の中でしか呼べない。プロンプトは出ない
権限プロンプトありこのAPI
呼び出すとブラウザが許可/ブロックのプロンプトを表示し、ユーザーが選ぶ
iOS独自requestPermission
iOSではrequestPermission()を操作起点で呼び、明示的に許可を得る
ボタンクリック等のユーザージェスチャー内でのみ requestDevice() を呼べる。呼ぶとデバイス選択ダイアログ(チューザー)が表示される。
3ライブデモ: BLEデバイスのバッテリー残量読み取り
4コードスニペット
TypeScript(要約版)
// デバイス選択ダイアログを起動(ユーザージェスチャー必須)
const device = await navigator.bluetooth.requestDevice({
filters: [{ services: ["battery_service"] }], // 0x180F
});
// GATT接続
const server = await device.gatt!.connect();
// Battery Serviceから残量を読む
const service = await server.getPrimaryService("battery_service");
const ch = await service.getCharacteristic("battery_level");
const value = await ch.readValue();
console.log("battery:", value.getUint8(0), "%");
// 残量変化の通知を購読する
await ch.startNotifications();
ch.addEventListener("characteristicvaluechanged", (e) => {
const v = (e.target as BluetoothRemoteGATTCharacteristic).value!;
console.log("changed:", v.getUint8(0), "%");
});
// 後始末: 切断
device.gatt?.disconnect();