2

我正在使用核心蓝牙框架。我已经实现了didDisconnectPeripheral方法来检测断开的外围设备。现在它在外围设备断开后大约 20 秒调用。我想减少那个超时时间。我在文档中搜索了很多但无法得到答案。真的有可能吗?

4

2 回答 2

0

您可能让委托在后台线程上工作,这可以解释延迟。

检查您的初始化以查看它是否在不同的线程上进行。如果您的队列值不是 nil,则很可能是这种情况。

self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

此外,在您的didDisconnectPeripheral方法中,您可以放置​​它来确定线程在被调用时是否发生了变化。

NSLog(@"Current thread: %@",[NSThread currentThread]);

如果线程已更改,那么您可以修改初始化以确保它继续在主线程上。

于 2015-04-09T19:38:30.577 回答
0

我一直在使用这种方法,它在我断开连接时(几乎)立即调用,所以绝对应该可以减少延迟时间。您确定您没有将其与didFailToConnectToPeripheral方法混淆吗?didFail 方法通常需要很长时间才能被调用,因为我相信我记得读过蓝牙 LE 没有超时时间,所以它会尝试连接很长时间。

于 2013-06-13T22:55:04.807 回答