iOS蓝牙根据设置连接,但我的应用没有连接的外围设备

时间:2017-02-22 16:39:53

标签: ios bluetooth core-bluetooth cbperipheral cbcentralmanager

我正在为自定义蓝牙设备制作应用。该应用程序与设备正确连接/通信,但有时会出现一些奇怪的连接/重新连接问题。

这个问题的一个可重现的情况是电池何时死亡:

  1. 应用程序与BT设备配合良好
  2. BT Device的电池耗尽,与应用程序断开连接
  3. BT设备电池已充电,尝试重新连接至应用
  4. BT设备连接到操作系统(Apple的BT设置表示设备已连接)
  5. 应用程序发现所有CBC特性,以及特征' isNotifying属性为false
  6. App对所需特征执行setNotifyValue为true
  7. 问题:永远不会调用此函数:func peripheral(_ peripheral:CBPeripheral,didUpdateValueFor characteristic:CBCharacteristic,error:Error?)
  8. 问题:self.manager.retrieveConnectedPeripherals(withServices:[identifier])不返回任何已连接的外围设备,即使Apple的BT设置表明设备已连接。
  9. 这是第8步中的经理的启动方式:

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

    问题:有谁知道这可能是什么原因?或者修复是什么?

    可能的线索:

    • 我需要选择忘记设备两次以忘记Apple的BT设置中的设备(在第一次忘记之后,设备仍然与显示的信息按钮连接)

    • 我启用了背景蓝牙

    • 我在调试器中收到以下消息:

      

    [CoreBluetooth] XPC连接无效

    • 我在Swift 3,Xcode 8

1 个答案:

答案 0 :(得分:0)

如果您的BLE设备断开连接,则需要调用此功能

[centralObj connectPeripheral:peripheral options:nil];

在委托方法中的 didDisconnectPeripheral 中。 您不需要每次都致电 scanForPeripheralsWithServices