爱笑的木偶
爱笑的木偶
  • 发布:2025-03-07 09:55
  • 更新:2025-03-07 09:55
  • 阅读:17

【报Bug】iBeacoAPI无法扫描附近标签

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11 10.0.26100

HBuilderX类型: 正式

HBuilderX版本号: 4.45

手机系统: Android

手机系统版本号: Android 14

手机厂商: 荣耀

手机机型: 200 Pro

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

<template>
<view class="container">
<button @click="initBeacon">启动扫描</button>

    <view v-for="(item, index) in beaconList" :key="index" class="beacon-card">  
        <view class="uuid">{{ item.uuid  }}</view>  
        <view class="meta">  
            <view>Major: {{ item.major  }}</view>  
            <view>Minor: {{ item.minor  }}</view>  
            <view>距离: {{ item.distance  }}</view>  
        </view>  
        <view class="status">  
            <view>信号强度: {{ item.rssi  }}dBm</view>  
            <view>更新时间: {{ item.lastUpdate  }}</view>  
        </view>  
    </view>  
</view>  

</template>

<script setup>
import {
ref,
onUnmounted
} from 'vue'

const beaconList = ref([])  
let intervalId = null  

const initBeacon = async () => {  
    try {  
        await uni.openBluetoothAdapter()  
        uni.onBeaconUpdate(res => {  
            console.log(res);  
            beaconList.value = res.beacons.map(parseBeaconData)  
        })  
        startScanning()  
    } catch (err) {  
        console.error(' 初始化失败:', err)  
    }  
}  

const parseBeaconData = (raw) => ({  
    uuid: raw.uuid,  
    major: parseInt(raw.major),  
    minor: parseInt(raw.minor),  
    rssi: raw.rssi,  
    distance: (10 ** ((-59 - raw.rssi) / (10 * 2))).toFixed(2) + 'm',  
    lastUpdate: new Date().toLocaleTimeString()  
})  

const startScanning = () => {  
    uni.startBeaconDiscovery({  
        uuids:['fda50693-a4e2-4fb1-afcf-c6eb07647825','fda50693-a4e2-4fb1-afcf-cbeb07647825'],  
        success: (res) => {  
            intervalId = setInterval(fetchUpdate, 500)  
        }  
    })  
}  

const fetchUpdate = () => {  
    uni.getBeacons({  
        success: res => {  
            beaconList.value = res.beacons.map(parseBeaconData)  
            // console.log('设备列表',res);  
            }  
    })  
}  

onUnmounted(() => {  
    clearInterval(intervalId)  
    uni.stopBeaconDiscovery()  
})  

</script>

<style lang="scss">

</style>

预期结果:

`预期结果为与小程序一样扫描到附近所有的beacon标签

实际结果:

只能扫描到一种标签

bug描述:

iBeaconApi无法扫描到Beacon标签,我手上有三种不同厂家的Beacon标签在uniapp+vue3编译成app的情况下只能扫描到其中一家的Beacon标签,其余两家都扫描不到,但在编译成微信小程序后就都可以扫描到,其次调用蓝牙API也是可以发现这些所有的Beacon标签的。

2025-03-07 09:55 负责人:无 分享
已邀请:

要回复问题请先登录注册