2013-07-31 46 views
2

我有一个CoreBluetooth应用程序。这将在前台开始连接并开始发送/接收数据,并在发送到后台时继续执行此操作,因为我在app-Info.plist中添加了bluetooth-centralUIBackgroundModes当飞行模式切换时,CoreBluetooth不会调用didDisconnectPeripheral

如果我切换飞行模式设置我的应用程序断开,但它不会得到didDisconnectPeripheral回调。为什么是这样?

我的解决方法是清除对centralManagerDidUpdateState中的我的CBPeriperal对象的所有引用,以便能够在应用程序再次进入前台时执行新的扫描和连接。

+0

如果你关掉只有蓝牙设置(而不是通过飞行模式) ,你的didDisconnectPeripheral被调用了吗? – Larme

+0

@Larme,同样的事情发生。 – chwi

回答

2

同样的回答你的其他问题 - >App don't discover services when reconnecting after power cycling bluetooth

你需要呼吁所有的外设cancelConnection:当你centralManager更新CBCentralManagerStatePoweredOff

+0

仍然不会执行回调'didDisconnectPeripheral',或者我只是不会在控制台(我的'NSLog')中看到它,因为我仍然在后台? – chwi

+0

您是否确保在获取CBCentralManagerStatePoweredOff通知时正确地释放了外设? –

+0

我取消连接后,我将外设对象设置为'nil'。是否有另一种方法来确保正确的释放? – chwi

相关问题