9***@qq.com
9***@qq.com
  • 发布:2026-08-17 19:23
  • 更新:2026-08-17 19:24
  • 阅读:20

【报Bug】createBLEConnection问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 家庭版

HBuilderX类型: 正式

HBuilderX版本号: 5.24

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: iphone xr

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

预期结果:

和android设备一样正常连接

实际结果:

返回10002

bug描述:

ios通过createBLEConnection连接已配对连接的蓝牙设备返回10002,该设备即支持配对模式,又支持BLE。android是正常的,ios在未配对连接的情况下可以正常连接,只有配对连接之后不能再连接。

2026-08-17 19:23 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

好的,收到你的 bug 反馈。作为 DCloud 官方人员,我对这个反馈进行如下评审和分析:

1. 反馈质量评审

这个 bug 反馈的核心信息比较清晰,但在复现条件上存在关键缺失,整体质量有待提升。

  • BUG 标题与描述:标题准确地概括了核心问题,描述也清楚地说明了设备特性(同时支持配对模式和 BLE)以及在 iOS 上的异常表现(未配对可连,配对后报 10002),官方人员能够看懂并理解问题场景。
  • 代码示例:缺失。这是一个涉及底层硬件交互和平台差异的问题,提供调用 uni.createBLEConnection 前后的上下文代码,以及获取 deviceId 的逻辑,将有助于我们判断是否是 API 使用不当或连接状态未清空导致的问题。建议补充相关代码片段。
  • 复现步骤:填写为“无”,这是本反馈最大的短板。虽然描述中提到了“配对连接之后不能再连接”,但缺少了具体的操作顺序(例如:如何触发配对、配对成功后是否重启了 App、是否调用了 closeBLEConnection 等)。没有清晰的复现步骤,官方人员很难在本地复现实机环境,强烈建议补充详细的操作步骤
  • 预期结果:“和 android 设备一样正常连接”,预期合理。
  • 实际结果:“返回 10002”,结合官方文档,10002 代表“没有找到指定设备”,这个错误反馈是正常的系统异常上报,并非误报。
  • 分类信息:非常完整。包含了 PC 环境、HBuilderX 版本(5.24 正式版)、手机 OS 平台(iOS 26)、Vue 版本(Vue2)和具体机型(iphone xr),为排查问题提供了良好的基础。

评审结论:反馈有一定价值,但由于缺少复现步骤和代码示例,目前难以直接定位和复现。需要用户补充信息。

2. 问题分析与排查

根据反馈内容,结合知识库中的信息,该问题成立的依据较充分,且在社区中已有大量类似反馈:

  • 错误码含义:根据 uni.createBLEConnection 官方文档,错误码 10002 表示“没有找到指定设备”。
  • 已知社区问题:在 ask 社区中,已有多个用户反馈过相同的问题。例如在 【报Bug】uni.createBLEConnection无法连接手机已配对的蓝牙设备 中,开发者明确指出在 iOS 系统下,当手机和蓝牙设备配对成功后,调用 createBLEConnection 始终连接不上,并报 10002 错误。这说明在 iOS 平台,系统配对状态确实可能影响 BLE 连接。
  • 底层机制差异:iOS 与 Android 在蓝牙底层机制上存在差异。在 iOS 上,deviceId 通常是变动的 UUID,如果设备已经通过系统设置进行了配对连接,可能会占用该设备或改变其被发现的状态,导致再次通过 API 连接时找不到指定设备。

3. 解决方案与建议

针对你当前遇到的问题,建议尝试以下方案:

  1. 规范连接生命周期:在调用 createBLEConnection 之前,确保之前的连接已经完全断开。可以尝试先调用 uni.closeBLEConnectionuni.closeBluetoothAdapter,然后再重新初始化 uni.openBluetoothAdapter 并发起连接。
  2. 重新搜索设备:在 iOS 上,不要使用之前缓存的 deviceId 直接连接。在发起连接前,重新调用 uni.startBluetoothDevicesDiscovery 搜索设备,获取最新的 deviceId 后再调用 createBLEConnection
  3. 尝试使用 5+ API:作为排查和替代方案,你可以尝试使用 HTML5+ 规范的蓝牙 API:plus.bluetooth.createBLEConnection。参考 plus 蓝牙文档
  4. 考虑使用第三方插件:如果上述方法均无法解决,且项目急需该功能,可以考虑使用插件市场的原生蓝牙插件。例如 xl-uts-bluetooth 蓝牙 ble 插件,其更新日志中明确提到已修复 iOS 端连接到“已连接”的设备时报错 10002/no device 的问题。

如果问题仍然存在,请补充详细的复现步骤和代码示例,我们将进一步排查。

内容为 AI 生成,仅供参考

要回复问题请先登录注册