corebluetooth : didDisconnectPeripheral 减少超时
Posted
技术标签:
【中文标题】corebluetooth : didDisconnectPeripheral 减少超时【英文标题】:corebluetooth : didDisconnectPeripheral reduce timeout 【发布时间】:2013-06-11 08:33:24 【问题描述】:我正在使用核心蓝牙框架。我已经实现了 didDisconnectPeripheral 方法来检测断开的外围设备。现在它在外围设备断开后大约 20 秒调用。我想减少那个超时时间。我在文档中搜索了很多但无法得到答案。真的可以吗?
【问题讨论】:
【参考方案1】:我一直在使用该方法,它会在我断开连接时(几乎)立即调用,因此绝对应该可以减少延迟时间。您确定不会将其与 didFailToConnectToPeripheral
方法混淆吗? didFail 方法通常需要很长时间才能被调用,因为我相信我记得读过蓝牙 LE 没有超时时间,所以它会尝试连接很长时间。
【讨论】:
【参考方案2】:您可能让委托在后台线程上工作,这可以解释延迟。
检查您的初始化,看看它是否在不同的线程上进行。如果您的队列值不是 nil,则很可能是这种情况。
self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
另外,在您的didDisconnectPeripheral
方法中,您可以放置它以确定线程在被调用时是否发生了变化。
NSLog(@"Current thread: %@",[NSThread currentThread]);
如果线程发生了变化,那么你可以修改初始化以确保它继续在主线程上。
【讨论】:
以上是关于corebluetooth : didDisconnectPeripheral 减少超时的主要内容,如果未能解决你的问题,请参考以下文章
CoreBluetooth:在 CBPeripheralStateConnecting 中的 didDisconnectPeripheral 回调