同一设备的多个 CBPeripheral

Posted

技术标签:

【中文标题】同一设备的多个 CBPeripheral【英文标题】:Multiple CBPeripheral's for same device 【发布时间】:2012-05-31 15:33:51 【问题描述】:

当使用 CoreBluetooth 框架访问蓝牙低功耗设备时,CBCentralManager 为外围设备返回一个 CBPeripheral

外围设备上有多个服务可用,我想将处理不同服务的特征值更新的代码拆分为多个类。因此,我需要将多个 id<CBPeripheralDelegate> 代表附加到外围设备。但是,这是不可能的,因为只支持一个委托。

有没有办法为同一个外围设备获取多个CBPeripheral 实例?

如果有可能多个应用程序访问同一个外围设备,它们会收到不同的CBPeripheral 实例吗?如果是,他们是否看到来自其他应用程序的更新? (比如说,应用 A 向一个特征写入一个值,应用 B 的委托是否也收到了 [– peripheral:didWriteValueForCharacteristic:error:] 消息?)

是否有任何优雅的方法可以支持将事件处理代码拆分为多个类?

【问题讨论】:

【参考方案1】:

CoreBluetooth: How to design code for many characteristics (30 - 40)? 的 answer 有一些设计技巧,在这里可能会有所帮助。简而言之,创建一个可以是CBPeripheralDelegate 的中介类,并支持多个特征类注册他们想要的任何特征。

【讨论】:

以上是关于同一设备的多个 CBPeripheral的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何从多个设备检测同一用户?

处理多个设备、同一用户的 GCM 注册 ID

iOS 应用的 AppStore 版本及其多个 Testflight 构建在同一设备上

如何使用同一个 GPU 设备在 SLURM 中定义多个 gres 资源?

Debian vServer:无法使用同一网络中的多个设备连接到 ***

使用多个 GPU 运行 LSTM 会得到“输入和隐藏张量不在同一设备上”