在我的应用程序中,我需要将数据写入外围设备的可写特性中。我可以通过扫描外围设备、检测和连接外围设备、发现服务、发现特征然后最终写入目标特征的过程来做到这一点。
这一切完成后,我保留了我感兴趣的 CBPheripheral 和 CBCharacteristic 的引用。现在,下一次,我尝试直接写入保存的外设和特性。但我低于蓝牙警告。如果我们还没有与它断开连接,我们不能直接写入外围特征吗?
BTBeaconTest[1421:60b] CoreBluetooth[WARNING] 不是有效的外围设备
[iPeripheral writeValue:dataToWrite forCharacteristic:iCharacterstic type:CBCharacteristicWriteWithResponse];
PS:我没有断开与外围设备的连接。
Best Answer-推荐答案 strong>
很可能蓝牙堆栈已被重置或由于某些其他原因您的外围设备变得无效。您需要监视状态更新,如果您收到 OFF 或 RESETTING ,则使您对外围设备和特征的所有句柄无效。通常最好只引用外围设备并在需要时查找特性。 CoreBluetooth 将为您缓存它们,因此查找速度会非常快。这个答案向您展示了如何做到这一点:https://stackoverflow.com/a/18091617/768935
关于ios - 直接写入已经连接的 CBPeripheral 而不重新发现它,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/18138363/
|