如何使用Web蓝牙查找信标?

问题描述 投票:0回答:1

我正在开发一个名为Web蓝牙的PWA,并试图扫描仅过滤信标,并在配对后显示其uuidmajorminor值。所以这是脚本代码:

<script>
         function onClickButton() {
            var known_service = "battery_service";
            return navigator.bluetooth.requestDevice({
                filters: [{ services: [known_service] }]

            })
                .then(() => {

                    navigator.bluetooth.addEventListener('advertisementreceived', event => {
                        var rssi = event.rssi;
                        var appleData = event.manufacturerData.get(0x004C);
                        if (appleData.byteLength != 23 ||
                            appleData.getUint16(0, false) !== 0x0215) {
                            console.log({ isBeacon: false });
                        }
                        var uuidArray = new Uint8Array(appleData.buffer, 2, 16);
                        var major = appleData.getUint16(18, false);
                        var minor = appleData.getUint16(20, false);
                        var txPowerAt1m = -appleData.getInt8(22);
                        console.log({
                            isBeacon: true,
                            uuidArray,
                            major,
                            minor,
                            pathLossVs1m: txPowerAt1m - rssi
                        });
                    });
                })
        }
    </script>

当我运行代码时,我得到错误说

无法读取null的属性'addEventListener'。

我尝试过像添加window.onload = function这样的建议但它不起作用。所以请建议我该如何解决这个问题?谢谢。

ibeacon progressive-web-apps web-bluetooth
1个回答
0
投票

遗憾的是,Chrome尚未在任何平台上的WebBluetoorh API中实施蓝牙扫描。有关详细信息,请参见状态页面

https://github.com/WebBluetoothCG/web-bluetooth/blob/master/implementation-status.md#scanning-api

除非/直到此更改,否则这意味着您无法使用WebBluetooth检测信标。

© www.soinside.com 2019 - 2024. All rights reserved.