核心蓝牙读取特定特征的值,同时读取其他特征



在我的应用程序中,我需要从具有相同服务和特征 UUID 的多个外围设备读取/写入值。每个外设都有许多特性,其中某一特定特性的值用于唯一标识外设。我想弄清楚的是

  • 如何连接到具有相同的服务 UUID。
  • 是否可以在读取其他特征的值的同时读取用于唯一标识外围设备的特征值,以便我可以区分更新特征值的外围设备。

启动特定服务的扫描并设置CBCentralManager委托后,您将收到以下回调:

optional func centralManager(_ central: CBCentralManager, 
                 didDiscover peripheral: CBPeripheral, 
           advertisementData: [String : Any], 
                        rssi RSSI: NSNumber)

在这里,您将获得公开特定服务的外围设备,并且只需调用传递要连接的外围设备的CBCentralManager即可连接到它:

func connect(_ peripheral: CBPeripheral, 
     options: [String : Any]? = nil)

请注意,您最多可以在十个外围设备上连接(如果我记得不错的话)。
您如何阅读特征并管理如何使用不同的外围设备存储它们取决于您。若要唯一标识外围设备,可以使用 identifier 属性,这是一个基于 mac 地址的计算属性。标识符不保证在生命周期内固定。

最新更新