CoreBluetooth:在 CBPeripheralStateConnecting 中的 didDisconnectPeripheral 回调
Posted
技术标签:
【中文标题】CoreBluetooth:在 CBPeripheralStateConnecting 中的 didDisconnectPeripheral 回调【英文标题】:CoreBluetooth: didDisconnectPeripheral callback while in CBPeripheralStateConnecting 【发布时间】:2014-01-20 20:49:40 【问题描述】:查看我的“CoreBluetooth”状态机生成的日志,发现有时会在外围设备位于CBPeripheralStateConnecting
和didConnectPeripheral
之前调用didDisconnectPeripheral
。代码不受这种奇怪的影响,但我想了解发生了什么。
还有其他人经历过这种情况或类似情况吗?我找不到任何合乎逻辑的解释。
【问题讨论】:
【参考方案1】:在ios6中CoreBluetooth还比较不成熟的时候,我采用了请求连接的连接策略,如果接下来2秒内没有连接,我会调用cancelPeripheralConnection
然后再发出connectPeripheral
这个循环会在终止并通知用户出现问题之前再继续 3 次。
看来,对didDisconnectPeripheral
的调用,即使在未首次连接时,也是对cancelPeripheralConnection
的中间调用的结果。
现在有了 iOS7 的稳定性,并且了解到 connectPeripheral
永远不会超时,我已经消除了中间 cancelPeripheralConnection
和 connectPeripheral
调用的复杂性,只需等待连接超时。
didDisconnectPeripheral
电话不再神秘!
【讨论】:
以上是关于CoreBluetooth:在 CBPeripheralStateConnecting 中的 didDisconnectPeripheral 回调的主要内容,如果未能解决你的问题,请参考以下文章
corebluetooth : didDisconnectPeripheral 减少超时