2017-02-22 81 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