iOS-使远程蓝牙设备订阅特性更改

iOS-使远程蓝牙设备订阅特性更改,ios,core-bluetooth,cbcentralmanager,cbperipheral,Ios,Core Bluetooth,Cbcentralmanager,Cbperipheral,我正在尝试在iOS中重建一个Android BLE应用程序,其中BLE Central同时充当客户端和服务器。 首先,本地设备正在扫描一个可扩展设备,发现它并连接到它。客户端角色然后本地设备接管服务器角色,并在任何特征值发生更改时通知BLE设备 在Android中,它工作得很好,因为我可以使用发现的BluetoothDevice,并通过BluetoothDevice.connectGatt方法使其订阅我的特征更改。更改值时,我使用notifyCharacteristicChanged方法通知设备

我正在尝试在iOS中重建一个Android BLE应用程序,其中BLE Central同时充当客户端和服务器。 首先,本地设备正在扫描一个可扩展设备,发现它并连接到它。客户端角色然后本地设备接管服务器角色,并在任何特征值发生更改时通知BLE设备

在Android中,它工作得很好,因为我可以使用发现的BluetoothDevice,并通过BluetoothDevice.connectGatt方法使其订阅我的特征更改。更改值时,我使用notifyCharacteristicChanged方法通知设备

我想最重要的区别是,在设备发现后的iOS中,我只得到一个CBP外设作为发现的设备,我不能用于任何基于客户端的功能,例如订阅服务器。至少,到目前为止我还没弄明白


我阅读了以下内容:线程和链接邮件列表讨论:关于iOS设备充当客户端和服务器,理论上这应该是可能的,我想知道是否有人找到了一种方法让发现的远程设备订阅我的特征更改。

您的远程设备也基于iOS吗?使用当前的核心蓝牙API很难实现从CBPeripal到CBCentral的连接。不,远程设备不是基于iOS的。它只是一个BLE芯片,被编程为一些服务的客户端角色的外围设备。在这种情况下,您还应该启动CBPeripheralManager,然后使用您的BLE芯片来发现该CBPeripheralManager中的特征。然后你会得到一个CBCentral,你可以用它来通知特征值的变化。问题是芯片本身无法发现任何东西,因为它只是作为外围设备,只能对通知进行宣传和反应。其他一切似乎都需要在iPhone应用程序中完成。