2013-07-31 49 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

相關問題