如何解决CBPeripheralManager的传输队列已满?
CBPeripheralManager
的方法有问题。
- (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals
根据Apple
documentation
,如果可以发送更新,则返回YES
如果底层发送队列已满,则返回NO
。
我得到了NO
。 我应该如何解决这个问题?
当输出队列已满时,您需要延迟发送响应。
工作队列scheme 。 解决这个问题的最简单的方法是创build一个工作队列 ,在其中插入要发送的数据块,并创build一个调度程序块,将这些项目发送出去。 当队列满时,当前块被放回到队列的头部,并且在接收到peripheralManagerIsReadyToUpdateSubscribers:
尝试再次发送。 如果中央连接断开或由于其他原因断开连接,则应取消所有发送。