You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS16下CBCentralManager扫描BLE抛出‘无效UUID’异常求助

iOS 16下CoreBluetooth扫描崩溃("String does not represent a valid UUID")的解决方法

核心原因

iOS 16对CoreBluetooth的scanForPeripherals(withServices:) API参数校验做了严格升级:

  • iOS 16及以上版本,传入nil会被解析为无效UUID字符串,触发NSInternalInconsistencyException崩溃
  • iOS 16之前版本,nil会被正确识别为“扫描所有BLE设备”的指令

解决方法

将扫描代码中的nil替换为空数组[],即可实现原有的“扫描所有设备”功能:

修改后的核心代码片段:

case .poweredOn:
    // 用空数组替代nil,兼容iOS16及更早版本
    central.scanForPeripherals(withServices: [])

扩展说明

如果需要扫描指定服务的BLE设备,直接传入对应的CBUUID数组即可,示例:

// 扫描包含特定服务UUID的设备
let targetServiceUUID = CBUUID(string: "0000FFE0-0000-1000-8000-00805F9B34FB")
central.scanForPeripherals(withServices: [targetServiceUUID])

内容的提问来源于stack exchange,提问作者Bách Khuất Duy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:03:16