知道给定的中心已使用 CoreBluetooth 订阅了哪些特征
Knowing which characteristics a given central has subscribed with CoreBluetooth
我有一项服务具有多项特性,正在使用蓝牙 LE 进行广告宣传。在它订阅了所有四个特征之前,我不想开始向中央发送数据,但我似乎无法找到一种方法来知道哪些特征已被订阅。这显然迫使我手动跟踪到目前为止已经订阅了哪些特征,但是,如果可能的话,我想避免这种情况。有没有办法列出给定中心订阅的特征?
CBMutableCharacteristic中有一个叫subscribedCentrals
的属性。您可以将它用于您的目的 - 每次中央订阅一个特征时,您可以检查它是否已经订阅了其他特征(可能您在某处存储了 CBMutableCharacteristic
个实例的列表,因此您可以迭代它们) .
正如我之前在评论中提到的,如果您想成为低功耗蓝牙世界的好公民,这可能不是一个好主意。当中央连接到旅游外围设备的开发人员没有收到来自他或她订阅的功能的更新通知时,他或她可能会感到困惑。
一旦您完全控制了中央(例如,您同时开发了仅在您的应用程序中使用的外围设备和中央),这就不是问题。否则我会建议重新考虑您的方法,也许有另一种解决方案适用于您和其他想要使用您的 BLE 服务的开发人员。
我有一项服务具有多项特性,正在使用蓝牙 LE 进行广告宣传。在它订阅了所有四个特征之前,我不想开始向中央发送数据,但我似乎无法找到一种方法来知道哪些特征已被订阅。这显然迫使我手动跟踪到目前为止已经订阅了哪些特征,但是,如果可能的话,我想避免这种情况。有没有办法列出给定中心订阅的特征?
CBMutableCharacteristic中有一个叫subscribedCentrals
的属性。您可以将它用于您的目的 - 每次中央订阅一个特征时,您可以检查它是否已经订阅了其他特征(可能您在某处存储了 CBMutableCharacteristic
个实例的列表,因此您可以迭代它们) .
正如我之前在评论中提到的,如果您想成为低功耗蓝牙世界的好公民,这可能不是一个好主意。当中央连接到旅游外围设备的开发人员没有收到来自他或她订阅的功能的更新通知时,他或她可能会感到困惑。
一旦您完全控制了中央(例如,您同时开发了仅在您的应用程序中使用的外围设备和中央),这就不是问题。否则我会建议重新考虑您的方法,也许有另一种解决方案适用于您和其他想要使用您的 BLE 服务的开发人员。