Ios peripheral:didUpdateValueForCharacteristic:error:如果CBCharacteristic';s正在通知是吗?
是否曾经出现过这样的情况,即当特征的Ios peripheral:didUpdateValueForCharacteristic:error:如果CBCharacteristic';s正在通知是吗?,ios,core-bluetooth,cbperipheral,Ios,Core Bluetooth,Cbperipheral,是否曾经出现过这样的情况,即当特征的isNotifying属性设置为YES时,CBPeripheralDelegate的外围设备:didUpdateValueForCharacteristic:error:将传回一个错误 显然,在发送显式读取请求的情况下,这是有意义的,但是如果外围设备的特征是通知中央设备,并且中央设备成功接收到该通知,则似乎不可能出现错误 该方法的文档没有对此添加任何细节。查看可能的most似乎不适用。我能看到的可能(如果不可能)是- CBATTErrorUnlikelyEr
isNotifying
属性设置为YES
时,CBPeripheralDelegate
的外围设备:didUpdateValueForCharacteristic:error:
将传回一个错误
显然,在发送显式读取请求的情况下,这是有意义的,但是如果外围设备的特征是通知中央设备,并且中央设备成功接收到该通知,则似乎不可能出现错误
该方法的文档没有对此添加任何细节。查看可能的most似乎不适用。我能看到的可能(如果不可能)是-
- CBATTErrorUnlikelyError
- CBATTErrorInsufficientResources
至少,您应该检查非nil错误,在这种情况下不处理更新。我认为,在大多数情况下,如果向该方法报告错误,您可能会断开连接。谢谢,检查错误代码是个好主意。嗯,如果设置了
isNotifying
,则不会发出明确的请求。CBATTError
描述似乎暗示处理ATT请求时出现问题,在本例中没有请求。CBError
s似乎也不适合此上下文。根据文档,错误描述来自蓝牙规范。我假设(这只是一个假设)“请求”是一个“操作”-notify操作是一个隐式请求,在核心蓝牙中可能存在接收更新的条件,并且在处理更新时出现错误-逻辑上要做的事情是通过此方法通知代理。如果看不到苹果的代码,就不可能说出一种或另一种方式,但防御性编程说,你应该检查一个错误,似乎如果操作有错误,那么它只会默默地失败或在内部重试读取。CBPeripal无法处理该错误,因为它从未发出明确的请求。但你可以说,你能做的最好的事情就是防御性地编写程序,因为我们不知道苹果的实施情况。谢谢