6

我正在开发一个 BLE 项目,为此我启动了 CBCentralManager,并扫描了可用的设备。我能够扫描并连接可用的 BLE 外围设备。一切正常,直到我没有在 iOS 11.0.x 版本上进行测试。
当我在 iOS 11.1.1 或 11.1.2 上测试时,CBCentralManager 在启动应用程序时总是返回给我 powerOff 状态。但是当我打开控制中心,然后关闭并再次打开蓝牙或激活/停用飞行模式(自动关闭/打开蓝牙)。应用程序开始扫描 BLE 外围设备,一切看起来都很好,直到重新启动应用程序。有没有人在 iOS 11.1.x 上遇到过这样的问题并且能够解决这个问题,请帮助解决这个问题。

下面是我检查状态的代码

func initiateCentralManager(){
      manager = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey : "MyBLECurrentState"]) 
}

 func centralManagerDidUpdateState(_ central: CBCentralManager){
       print("Received CBCentralManager state")
        peripheralArray.removeAll()
        if central.state == .poweredOn {
            print("poweredOn")
        } else if central.state == .poweredOff {
            print("poweredOff")

        }
    }
4

1 回答 1

16

这是正在发生的事情

iOS 有 3 个级别的蓝牙状态:

  1. 蓝牙开启并允许新连接
  2. 蓝牙开启且不允许新连接
  3. 蓝牙关闭

CBCentralManager将返回poweredOff案件状态23

处于状态1(蓝牙开启和允许新连接)

  • 在设置中切换OFF蓝牙
  • ON在控制中心切换

处于状态2(蓝牙开启且不允许新连接)

  • 在设置中切换OFF蓝牙
  • ON在控制中心切换
  • 在控制中心切换OFF(按钮将变为白色)

1从进入状态2

  • 进行 BT 设置,然后单击“允许新连接”
于 2018-04-27T03:30:32.103 回答