EAAccessory 和 CBPeripheral 如何匹配 MFi 设备?

How to match EAAccessory and CBPeripheral with MFi device?

我有一个 MFi 设备,它使用 BLE 进行控制,使用经典蓝牙进行音频流传输。

在应用程序中,我使用 coreBluetooth 框架扫描 BLE 和 EAAccessory 框架扫描经典蓝牙。 如果目标设备的经典蓝牙尚未连接,我不希望连接目标设备的 BLE。 所以我需要知道哪个 EAAccessory 对应于目标 CBPeripheral。

我熟悉coreBluetooth,有UUID字符串来标识CBPeripheral。但它看起来不存在于 EAAccessory 中。 我有一个想法但不确定:也许固件端可以在广告数据中配置EAAccessory的序列号CBPeripheral的制造数据 序列号,方便App端判断是否相同

有谁知道在App端和固件端实现这个的一般方法吗?

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