【问题标题】:Avoid discovering services and characteristics on a reconnect in CoreBluetooth避免在 CoreBluetooth 中重新连接时发现服务和特征
【发布时间】: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


【解决方案1】:

Mezulu,您想使用加密/配对链接 - 然后 iOS 将为您进行缓存。看我的回答here

【讨论】:

  • 感谢您的回复。我不知道 iOS 6 引入了服务和特性的缓存。这就是我一直在寻找的。​​span>
猜你喜欢
  • 1970-01-01
  • 2013-08-30
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多