【发布时间】:2012-10-14 18:07:39
【问题描述】:
我正在为 iPhone 开发 CoreBluetooth 管理器应用程序。为了能够重新连接到以前发现的 CBPeripheral,我保存了外围设备的 UUID(在 CoreData 中),然后调用 CBCentralManager 的retrievePeripherals:。我的 didRetrievePeripherals: 回调被调用,我可以连接,等等。到目前为止一切顺利。
由于我要重新连接到我已经知道的外围设备,我想避免发现它的服务和特性。因此,当我第一次连接时,我会保存服务和特性的 UUID(同样在 CoreData 中,以及外围设备的 UUID)。
但是我不能使用这些 UUID 来读取或写入特征,因为 CBPeripheral 的 readValueForCharacteristic: 或 writeValueForCharacteristic: 以 CBCharacteristic 作为参数,并且没有 API 来构造 CBCharacteristic 实例。
有什么方法可以避免在重新连接之前已知的外围设备时发现服务和特征?
【问题讨论】:
-
您好,当您将已知设备的 UUID 保存在 CoreData 中时,您不能为每个设备保存一个包含它们实现的服务和特性的数据结构吗?
-
设备的服务和特性由我保存的 UUID 标识。但是我无法在 CoreData 中保存 CBService 和 CBCharacteristic 的实例,因为它们不是从 NSManagedObject 派生的——至少,我不知道我该怎么做。还是我误解了你的问题?
-
好的,我知道你的问题了。我认为您将不得不与 discoverCharacteristics:forService: using the UUIDs ...
-
是的,这就是我现在正在做的,但我试图避免那部分。
标签: ios core-bluetooth