无法使用服务 UUID 发现外围设备

Posted

技术标签:

【中文标题】无法使用服务 UUID 发现外围设备【英文标题】:Can't discover peripheral using service UUID 【发布时间】:2018-10-11 01:51:05 【问题描述】:

我正在尝试检测我拥有的自行车功率计。我使用应用程序 LightBlue 来确定功率计的服务 UUID,即 E9410100-B434-446B-B5CC-36592FC4C724。

但是当我使用 CBCentralManager 发现具有此 UUID 的设备时,什么都没有发现:

manager?.scanForPeripherals(withServices: [CBUUID(string: "E9410100-B434-446B-B5CC-36592FC4C724")], options: nil)

我应该使用这个 UUID 的缩短版本吗?

【问题讨论】:

您能否也展示您的 LightBlue 屏幕截图和您实现的 CBCentralManagerDelegate?它可以扫描其他设备吗?如果您使用withServices: nil,它可以扫描您的骑行功率计吗? 【参考方案1】:

您无需搜索特定设备的标识符(无论如何,这对于每个 ios 设备都是唯一的)。相反,您搜索的是宣传您感兴趣的服务的外围设备。

在cycling power的情况下,这是0x1818

你想要:

manager?.scanForPeripherals(withServices: [CBUUID(string: "1818")], options: nil)

【讨论】:

那你需要展示更多代码;你确定你的委托是正确创建的吗?你的manager 不是nil。如果为 services 数组指定 nil 会发生什么?

以上是关于无法使用服务 UUID 发现外围设备的主要内容,如果未能解决你的问题,请参考以下文章

获取蓝牙低功耗外设的MAC地址

核心蓝牙无法发现外围设备

使用基于广告服务 UUID 的扫描过滤器扫描 BLE 外围设备

如何在 Android 中获取当前连接的 BLE 外围设备

为啥 CBPeripheral 标识符和 UUID 不同?

CoreBluetooth:无法发现已发现外围设备的特征