【问题标题】:How to fix CBPeripheralManager's transmit queue is full?如何修复 CBPeripheralManager 传输队列已满?
【发布时间】:2014-04-23 09:38:31
【问题描述】:

CBPeripheralManager 的方法有问题。

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

根据Appledocumentation,如果可以发送更新,它将返回YES,如果底层传输队列已满,则返回NO

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

【问题讨论】:

    标签: ios objective-c bluetooth-lowenergy core-bluetooth


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多