电源循环蓝牙后重新连接时,应用程序不会发现服务

时间:2013-07-31 09:21:19

标签: ios core-bluetooth

当我在连接到CoreBluetooth外围设备时切换蓝牙时,我会在centralManagerDidUpdateState回调中断开并删除对我的外围设备的所有引用。

执行另一次扫描会找到并重新连接到设备并再次发出discoverServices,但这次回调didDiscoverServices周围从未发生过。通过删除所有设置(常规 - >重置 - >重置所有设置)或重新启动它再次工作。正常断开/重新连接也有效。我该如何解决这个问题,或者以编程方式删除iOS存储的所有缓存和UUID?

2 个答案:

答案 0 :(得分:1)

当您收到centralManager状态已更改为CBCentralManagerStatePoweredOff的回调时,您需要遍历所有外围设备并在其上调用cancelConnection:。然后你会很高兴。

[_yourCentralManager cancelPeripheralConnection:yourPeripheral];

答案 1 :(得分:0)

如果中心状态为CBManagerStatePoweredOn,请像这样调用cancelPeripheralConnection API:

[self.centralManager cancelPeripheralConnection:self.peripheral];

回调方法centralManager:didDisconnectPeripheral:error:将被调用。但是,如果状态不是CBManagerStatePoweredOn,例如CBManagerStatePoweredOff,则该回调将不会执行。