如何解决CBPeripheralManager的传输队列已满?

CBPeripheralManager的方法有问题。

 - (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals 

根据Apple documentation ,如果可以发送更新,则返回YES如果底层发送队列已满,则返回NO

我得到了NO 。 我应该如何解决这个问题?

当输出队列已满时,您需要延迟发送响应。

工作队列scheme 。 解决这个问题的最简单的方法是创build一个工作队列 ,在其中插入要发送的数据块,并创build一个调度程序块,将这些项目发送出去。 当队列满时,当前块被放回到队列的头部,并且在接收到peripheralManagerIsReadyToUpdateSubscribers:尝试再次发送。 如果中央连接断开或由于其他原因断开连接,则应取消所有发送。