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 回调

CoreBluetooth 限制?

CoreBluetooth 发现外设广告数据格式

CoreBluetooth:无法发现已发现外围设备的特征

CoreBluetooth 用于信标

CoreBluetooth 框架是不是支持请求 Blob 读取?