2017-02-22 68 views
0

我正在爲自定義藍牙設備製作應用程序。該應用程序正確地與設備連接/通信,但有時會出現一些奇怪的連接/重新連接問題。iOS藍牙根據設置連接,但我的應用程序沒有連接的外圍設備

一個這個問題的可重複的情況,當電池耗盡時:

  1. 應用與BT設備
  2. BT設備的電池耗盡,從應用程序斷開工作以及
  3. BT設備的電池充電,嘗試重新連接到應用程序
  4. BT設備連接到操作系統(蘋果的BT設備表示設備已連接)
  5. 應用程序發現所有的CBC特性,以及'isNotifying p roperty是假
  6. 應用執行setNotifyValue爲真所需要的特性
  7. 問題:該功能不會被調用:FUNC周(_周:CBPeripheral,didUpdateValueFor特性:CBCharacteristic,錯誤:錯誤)
  8. 問題:self.manager.retrieveConnectedPeripherals(withServices:[identifier])不會返回連接的外圍設備,即使Apple的BT設置表示設備已連接。

這是如何在第8步經理啓動:

fileprivate override init() { 
    super.init() 
    self.manager = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey : Constants.cbCentralManagerOptionRestoreIdentifierKey]) 
} 

問題:有誰知道這種情況的原因可能是什麼?或者修復是什麼?

可能的線索:

  • ,我需要選擇忘記設備兩次忘記蘋果的BT設置的設備(在第一時間遺忘之後,該設備仍然與顯示信息按鈕連接)

  • 我有背景的Bluetooth

  • 我得到了我的調試以下消息:

[CoreBluetooth] XPC connection invalid

  • 我對雨燕3,Xcode中8
+0

當連接丟失時,您如何在IOS代碼中啓動連接?你應該簡單地調用'peripheral。connect()'in'didDisconnect' – Paulw11

+1

重新連接時,當調用centralManager didDisconnectPeripheral時,我調用'self.manager.connect(peripheral,options:nil)'(其中self.manager與上述步驟8中的相同) –

回答

0

如果您的BLE裝置斷開連接,那麼你需要調用這個函數

[centralObj connectPeripheral:peripheral options:nil]; 

didDisconnectPeripheral在委託方法。 您無需每次撥打電話scanForPeripheralsWithServices