2016-10-02 120 views
0

我嘗試在重新啓動手機後重新連接外設。重新啓動後連接到藍牙外設

我正在使用位置更新回調在後臺啓動BLE連接過程。 的BLE堆棧在後臺正確初始化(CBCentralManagerStatePoweredOn事件發送)

「連接」的外圍已啓動,但沒有建立連接...

任何想法重啓後重新連接的設備?

回答

0

當你說外設上的「連接」開始時,你的意思是你使用connectPeripheral手動連接:?我過去一直在與iOS上的連接鬥爭,並注意到CoreBluetooth在內部存在很多競爭條件,您必須避免。通常情況下,我建議總是對所有連接請求執行一次調度延遲,在CoreBluetooth回調後發生的最少20ms。這將避免大多數的比賽條件。您可以自行測試,例如設置待定連接,然後在稍後調用cancelPeripheralConnection:在外設連接之前。當你得到didFailToConnect回調,然後立即再次調用connectPeripheral:。現在,連接應處於連接狀態爲「連接」的「限制」模式,但實際上外圍設備將不會連接。再次調用連接將不會在這一點上做任何事情。

我不知道這是你的問題的原因,但它可能是。此外,在恢復CentralManager狀態時,我建議讓框架在開始與之交互之前「解決」大約一秒。

另一個重要的事情是,直到獲得AppDelegate的applicationDidFinishLaunchingWithOptions:回調後,纔會重新啓動管理器。這樣做可能會導致奇怪的行爲。

請做一些更多的調查,如果您仍然有問題,請讓我知道。我可能會有一些進一步的提示。/Anton