我对swift和BLE很新。我想知道在iOS中是否可以与BLE进行双向通信?我在委托方法上看到了
optional func peripheral(_ peripheral: CBPeripheral,
didUpdateValueFor characteristic: CBCharacteristic,
error: Error?)
你可以获得'特征'的句柄,它有一个方法'setValue'。你能更新这个值并在外围设备上接收事件吗?
最终,我希望外围设备(广告/信标端)知道何时读取其特性,并将一些信息传回给它以让用户知道。
答案 0 :(得分:0)
你可以通过建立连接的一方使用setValue
(进入某个属性)和运行GATT服务器的一方使用"指示"来与BLE进行双向通信。或"通知"在其他一些属性上。
如果您完全控制外围设备上的代码,我认为您可以在每次读取属性时执行操作。但是,标准中没有固有的方式可以在阅读时得到通知。
答案 1 :(得分:0)
我会说这是一般的BLE问题,而不是iOS问题。当您在网络上阅读有关BLE通信的信息时,您会读到“客户端和服务器端”一词,该词表示哪个“边” ist宣传一个值(服务器),哪个正在接收该值(客户端)。
此外,您可以创建具有不同属性的特征,例如读取,写入,通知。
我建议具有一个特性,该特性可将新值通知客户端,并且每次调用didUpdateValueFor characteristic
方法时,您都在该特性中编写希望服务器接收的信息。
例如具有具有读取,通知属性的特征notifyMe
和具有仅写入属性的特征myAnswer
。