uni-app IOS系统苹果12 13 调用蓝牙 uni.onBluetoothDeviceFound无反应 安卓鸿蒙系统及苹果15测试均正常
uni-app IOS系统苹果12 13 调用蓝牙 uni.onBluetoothDeviceFound无反应 安卓鸿蒙系统及苹果15测试均正常
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:uniapp/小程序
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.99
第三方开发者工具版本号:3.8.11
基础库版本号:1.14.2
示例代码:
```javascript
openBluetoothAdapter() {
console.log('开始搜索蓝牙设备')
uni.openBluetoothAdapter({
success: (res) => {
this.startBluetoothDevicesDiscovery()
},
fail: (res) => {
console.log('请打开设备蓝牙功能')
}
})
},
startBluetoothDevicesDiscovery() {
uni.startBluetoothDevicesDiscovery({
services: [], //搜索目标设备的服务
allowDuplicatesKey: false, //搜索结果是否允许重复
success: (res) => {
this.onBluetoothDeviceFound()
},
})
},
onBluetoothDeviceFound() {
let devicesArr = []
uni.onBluetoothDeviceFound((res) => {
let devices = res.devices
devices.forEach((item) => {
if (item.name) {
devicesArr.push(item)
}
})
this.devices = devicesArr
})
},
操作步骤:
小程序打开调用this.openBluetoothAdapter()
预期结果:
uni.onBluetoothDeviceFound调用成功 返回搜索到的设备
实际结果:
uni.onBluetoothDeviceFound 一直没有响应 也没有报错信息
bug描述:
IOS系统苹果12 13 调用蓝牙 uni.onBluetoothDeviceFound没有反应(安卓鸿蒙系统经测试都是好的 苹果15也是好的)
更多关于uni-app IOS系统苹果12 13 调用蓝牙 uni.onBluetoothDeviceFound无反应 安卓鸿蒙系统及苹果15测试均正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
补充:开发的是专有钉钉小程序。在小程序开发平台用官方的demo一样有这个问题
更多关于uni-app IOS系统苹果12 13 调用蓝牙 uni.onBluetoothDeviceFound无反应 安卓鸿蒙系统及苹果15测试均正常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我做的app也遇到这个问题,onBluetoothDeviceFound无反应
startBluetoothDevicesDiscovery搜索去掉services参数就可以了
请问楼主这个问题 解决了么?
在 uni-app 中调用 uni.onBluetoothDeviceFound 时,如果仅在 iOS 12 和 13 设备上无反应,而在其他设备(如 Android、HarmonyOS 和 iOS 15)上正常,可能是由于以下原因:
1. iOS 蓝牙权限问题
确保在 iOS 设备上已经正确获取了蓝牙权限。uni-app 在 iOS 上需要用户明确授权才能使用蓝牙功能。你可以通过以下步骤检查和处理权限问题:
-
在
manifest.json中配置蓝牙权限:{ "app-plus": { "distribute": { "ios": { "permissions": { "bluetooth": { "description": "需要使用蓝牙功能" } } } } } } -
在代码中动态请求蓝牙权限:
uni.authorize({ scope: 'scope.bluetooth', success() { console.log('蓝牙权限已授权'); }, fail() { console.log('蓝牙权限未授权'); } });
2. iOS 系统版本兼容性问题
iOS 12 和 13 可能在某些 API 的实现上与较新的 iOS 版本存在差异。确保你使用的 uni-app SDK 版本支持这些系统版本。
- 检查
uni-app的官方文档或更新日志,确保你使用的版本支持 iOS 12 和 13。 - 如果可能,尝试升级
uni-app到最新版本。
3. 蓝牙设备发现逻辑问题
某些 iOS 设备可能在蓝牙设备发现过程中存在延迟或其他问题。可以尝试以下方法优化蓝牙设备发现逻辑:
-
增加扫描时间:确保扫描时间足够长,以便设备有足够的时间发现蓝牙设备。
uni.startBluetoothDevicesDiscovery({ services: [], allowDuplicatesKey: true, success(res) { console.log('开始搜索蓝牙设备'); setTimeout(() => { uni.stopBluetoothDevicesDiscovery({ success(res) { console.log('停止搜索蓝牙设备'); } }); }, 10000); // 10秒后停止搜索 } }); -
检查设备是否在范围内:确保蓝牙设备在 iOS 设备的可发现范围内,并且设备处于可被发现的状态。
4. 调试与日志输出
在 iOS 12 和 13 设备上,开启调试模式并输出详细的日志信息,以便更好地定位问题。
uni.onBluetoothDeviceFound((res) => {
console.log('发现蓝牙设备:', res.devices);
});

