如何在 iOS 中使用 Core Bluetooth 获取蓝牙设备的唯一 ID
Posted
技术标签:
【中文标题】如何在 iOS 中使用 Core Bluetooth 获取蓝牙设备的唯一 ID【英文标题】:How to get unique ID of Bluetooth Device using Core Bluetooth in iOS 【发布时间】:2020-12-29 21:13:27 【问题描述】:我正在开发一个应用程序,它需要 ios 设备提供蓝牙 UUID(从扫描/连接的设备获取蓝牙 UUID),然后将其发送到服务器以进行进一步开发。我在互联网上找不到任何答案。
我正在使用核心蓝牙扫描和连接设备并发送设备信息名称和 uuid,但 uuid 每 15-20 分钟更改一次。如何识别之前连接的设备以及如何获得唯一的 BLE 设备 UUID 以便我可以将标识符与之前添加的设备列表匹配。 请帮忙...
【问题讨论】:
【参考方案1】:您可以获取发现的CBPeripheral
的identifier
属性并连接到该属性。如果您连接,那么该设备的标识符在很长一段时间内都不会改变(实际上我认为它永远不会改变,但理论上它可以)。
一旦您有了外设标识符,您就可以保存该值,然后通过retrievePeripherals
而不是扫描来获取外设。
您将面临的问题是identifier
特定于发现外围设备的 iOS 设备。另一台 iOS 设备将获得相同外围设备的不同标识符。
如果您需要一个可跨 iOS 设备传输的外围设备的唯一标识符,那么您需要通过外围设备本身的特性公开这样的值,并让您的应用在连接后读取该特性值。
【讨论】:
好的@Paulw11 谢谢。我已将 BLE 标识符保存到后端数据库,并且可以使用 retrievePeripherals 搜索 BLE 设备,但是当我尝试连接它时,出现错误名称为“API MISUSE:取消未使用外围设备的连接getData
是一个局部变量。一旦该闭包或函数退出,它将被释放,这就是警告告诉你的。您需要在属性中保持对外围设备的强引用。
你能指导我如何做到这一点。以上是关于如何在 iOS 中使用 Core Bluetooth 获取蓝牙设备的唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中使用 Core Bluetooth 获取蓝牙设备的唯一 ID
如何使用 Core Bluetooth 在 iOS 中设置 BLE 外围设备的名称
iOS Core Data Fetch Request,如何使用