【问题标题】:CoreBluetooth read value of specific characteristic while reading other characteristcsCoreBluetooth 读取特定特性的值,同时读取其他特性
【发布时间】:2018-04-18 04:10:18
【问题描述】:

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

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

【问题讨论】:

  • 当发现每个外围设备时,您将获得一个 CBPeripheral 的实例传递给您的委托方法。该对象有一个标识符属性,您可以使用它来唯一标识该外围设备。当您收到带有数据的 CBPeripheralDelegate 方法的回调时,相同的 CBPeripheral 实例将被传递给委托方法,因此您可以确定数据来自哪个外围设备。
  • 谢谢保罗。正如 Andrea 在他的回答中提到的那样,标识符属性将发生变化。读取/订阅一个特性后是否可以读取另一个特性的值?
  • 连接到外围设备后,您可以读取您喜欢的任何特征,但我有一个应用程序将其目标外围设备标识符存储在 userdefaults 中,并且该标识符多年来没有改变跨度>

标签: ios bluetooth bluetooth-lowenergy core-bluetooth cbcentralmanager


【解决方案1】:

一旦您启动了对特定服务的扫描并设置了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 地址的计算属性。标识符不保证终身固定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多