当我在连接到CoreBluetooth
外围设备时切换蓝牙时,我会在centralManagerDidUpdateState
回调中断开并删除对我的外围设备的所有引用。
执行另一次扫描会找到并重新连接到设备并再次发出discoverServices
,但这次回调didDiscoverServices
周围从未发生过。通过删除所有设置(常规 - >重置 - >重置所有设置)或重新启动它再次工作。正常断开/重新连接也有效。我该如何解决这个问题,或者以编程方式删除iOS存储的所有缓存和UUID?
答案 0 :(得分:1)
当您收到centralManager状态已更改为CBCentralManagerStatePoweredOff
的回调时,您需要遍历所有外围设备并在其上调用cancelConnection:
。然后你会很高兴。
[_yourCentralManager cancelPeripheralConnection:yourPeripheral];
答案 1 :(得分:0)
如果中心状态为CBManagerStatePoweredOn
,请像这样调用cancelPeripheralConnection
API:
[self.centralManager cancelPeripheralConnection:self.peripheral];
回调方法centralManager:didDisconnectPeripheral:error:
将被调用。但是,如果状态不是CBManagerStatePoweredOn
,例如CBManagerStatePoweredOff
,则该回调将不会执行。