如何将EAAccessory和CBPeripheral与MFi设备匹配?

时间:2018-12-19 04:16:28

标签: ios core-bluetooth ios-bluetooth mfi eaaccessory

我有使用BLE进行控制并使用Classic Bluetooth进行音频流传输的MFi设备。

在App中,我使用coreBluetooth框架扫描BLE,并使用EAAccessory框架扫描Classic Bluetooth。 如果经典蓝牙尚未连接,我不希望目标设备的BLE被连接。 所以我需要知道哪个EAAccessory与目标CBPeripheral相对应。

我熟悉coreBluetooth,有UUID字符串来标识CBPeripheral。但是,它在EAAccessory中似乎不存在。 我有一个主意,但不确定:也许固件方可以使用相同的配置 EAAccessory的序列号 CBPeripheral的制造数据 序列号,以便App端可以检查它们是否相同。

有人知道在App端和固件端实现此功能的一般方法吗?

1 个答案:

答案 0 :(得分:1)

我真的不认为2. BT和BTLE是由外设和电话端的不同芯片管理的。
通常在BT中,您使用MAC地址在BTLE侧标识外围设备,因为在第一个连接的iOS为其外围设备提供了自己的标识符,所以不再使用该MAC地址。
您可以做的可能是在固件方面,通过公开具有某种与2.相关的特征的服务。
评论后更新
据我所知,尚不存在最佳实践,最糟糕的部分是您必须以不同的方式处理连接,这主要是由于iOS方面的连接方式。在BLE上,您可以选择一个不需要加密或绑定的未加密连接,而在BT端,我认为需要绑定。
可能最简单的流程是,用户绑定BT设备。进入应用程序并检测到已连接的BT设备后,可使用扫描方法通过过滤设备公开的特定服务ID来检测BLE伴侣设备。一旦这样做,您还可以使用BLE名称过滤发现,而无需连接。
Adv数据包受到大小限制(29个可用字节),但您也可以使用扫描响应(31个字节),该扫描响应提供了一些其他属性,例如将在字典中显示的其他制造商数据(kCBAdvDataManufacturerData)。
一旦知道这是正确的设备,就可以启动连接,该连接不需要成对或绑定,但不需要加密(配对和绑定将要求用户接受您应用内的连接)。