| // デモ用:ビーコン名に "StoreBeacon" を含むデバイスに接続し、 | |
| // GATT Characteristic (UUIDサンプル: 0000beac-0000-1000-8000-00805f9b34fb) から venueSlug を取得する想定 | |
| async function connectBeacon(){ | |
| try{ | |
| const device = await navigator.bluetooth.requestDevice({ | |
| filters: [{ namePrefix: 'StoreBeacon' }], | |
| optionalServices: ['0000beac-0000-1000-8000-00805f9b34fb'] | |
| }); | |
| const server = await device.gatt.connect(); | |
| const service = await server.getPrimaryService('0000beac-0000-1000-8000-00805f9b34fb'); | |
| const ch = await service.getCharacteristic('0000bead-0000-1000-8000-00805f9b34fb'); | |
| const value = await ch.readValue(); | |
| const decoder = new TextDecoder('utf-8'); | |
| const slug = decoder.decode(value.buffer); | |
| alert('ビーコン検出: ' + slug + '\n(実際のチェックインは店舗QRを推奨)'); | |
| }catch(e){ alert('Bluetoothエラー: ' + e.message); } | |
| } | |
| document.getElementById('beacon').onclick = () => connectBeacon(); |