uni-app iso 执行plus.bluetooth.getBLEDeviceRSSI success时,正常输出。fail时,不输出任何结果
uni-app iso 执行plus.bluetooth.getBLEDeviceRSSI success时,正常输出。fail时,不输出任何结果
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
PC开发环境操作系统版本号:
win10
HBuilderX类型:
正式
HBuilderX版本号:
3.2.9
手机系统:
iOS
手机系统版本号:
iOS 13.1
手机厂商:
苹果
手机机型:
iphone7
页面类型:
vue
打包方式:
云端
项目创建方式:
HBuilderX
示例代码:
plus.bluetooth.getBLEDeviceRSSI({
deviceId:this.deviceId,
success:function(e){
self.signNum = e.RSSI;
//console.log('RSSI12: '+self.signNum );
},
fail:function(e){
console.log('get RSSI failed: ');
}
});
操作步骤:
plus.bluetooth.getBLEDeviceRSSI({
deviceId:this.deviceId,
success:function(e){
self.signNum = e.RSSI;
//console.log('RSSI12: '+self.signNum );
},
fail:function(e){
console.log('get RSSI failed: ');
}
});
预期结果:
console.log('get RSSI failed: ');
实际结果:
无输出
bug描述:
ios可以正常读到 rssi 数值,当蓝牙丢失后,ios执行不了,fail:function(e){console.log('get RSSI failed: ');}log无输出,无反应,不执行。安卓版没问题正常输出console.log
更多关于uni-app iso 执行plus.bluetooth.getBLEDeviceRSSI success时,正常输出。fail时,不输出任何结果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app iso 执行plus.bluetooth.getBLEDeviceRSSI success时,正常输出。fail时,不输出任何结果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个iOS平台特定问题,可能与uni-app底层对蓝牙API的异常处理机制有关。从你的代码和描述来看,当蓝牙设备丢失时,iOS端的fail回调没有被触发,而Android端正常。
可能的原因和解决方案:
-
iOS蓝牙API的异步特性:iOS底层蓝牙API在某些异常情况下可能不会立即触发错误回调,而是进入等待状态。建议在调用
getBLEDeviceRSSI前先检查蓝牙连接状态。 -
添加超时机制:由于iOS可能不触发fail回调,可以手动实现超时控制:
let timeoutFlag = false
const timeout = setTimeout(() => {
timeoutFlag = true
console.log('get RSSI timeout')
}, 3000) // 3秒超时
plus.bluetooth.getBLEDeviceRSSI({
deviceId: this.deviceId,
success: function(e) {
if(!timeoutFlag) {
clearTimeout(timeout)
self.signNum = e.RSSI
}
},
fail: function(e) {
if(!timeoutFlag) {
clearTimeout(timeout)
console.log('get RSSI failed:', JSON.stringify(e))
}
}
})
- 检查设备连接状态:在获取RSSI前确认设备是否已连接:
// 先检查蓝牙设备是否已连接
plus.bluetooth.getConnectedBluetoothDevices({
success: function(res) {
const device = res.devices.find(d => d.deviceId === self.deviceId)
if(!device) {
console.log('设备未连接')
return
}
// 设备已连接,再获取RSSI
plus.bluetooth.getBLEDeviceRSSI({
deviceId: self.deviceId,
success: function(e) {
self.signNum = e.RSSI
},
fail: function(e) {
console.log('get RSSI failed:', JSON.stringify(e))
}
})
}
})
- 错误信息输出:修改fail回调以输出完整的错误信息,便于调试:
fail: function(e) {
console.log('get RSSI failed:', JSON.stringify(e))
}

