CoreBluetooth XPC连接无效 [英] CoreBluetooth XPC connection invalid

查看:209
本文介绍了CoreBluetooth XPC连接无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public class BLE: NSObject, CBCentralManagerDelegate {

    var centralManager:CBCentralManager!

    public override init() {
        super.init()
        self.centralManager = CBCentralManager.init(delegate: self, queue: nil)
    }

    public func centralManagerDidUpdateState(_ central: CBCentralManager) {

        switch central.state {
        case .unknown:
            print("unknown")
        case .resetting:
            print("resetting")
        case .unsupported:
            print("unsupported")
        case .unauthorized:
            print("unauthorized")
        case .poweredOff:
            print("powered off")
        case .poweredOn:
            print("powered on")
            self.centralManager.scanForPeripherals(withServices: nil, options: nil)
        }
    }
}

这是我的代码,每当我运行它时,都会给我消息

This is my code, whenever I run it, it gives me the message

"[[CoreBlueooth] XPC连接无效"

"[CoreBlueooth] XPC Connection Invalid"

我确实尝试将 NSBluetoothPeripheralUsageDescription 添加到我的info.plist文件中,但这没有用.

I did try adding NSBluetoothPeripheralUsageDescription into my info.plist file but that didn’t work.

但是,奇怪的是,如果我直接初始化 CBCentralManager 而不是使用类,则一切正常.

The weird part though is that, if I initialize CBCentralManager directly instead of using a class then everything works fine.

仅当我尝试通过在类 BLE 或与此相关的任何其他类上创建对象来初始化 CBCentralManager 时,才会出现此问题.

This problem only arises when I try to initialize CBCentralManager by creating on object of the class BLE or any other class for that matter.

推荐答案

CBCentralManager引用应作为对该类的成员变量进行强引用.它不能用作本地参考.

CBCentralManager reference should be a strong reference to the class as a member variable. It cannot work as a local reference.

再试一次:

class ViewController: UIViewController {
   var ble: BLE!
   override func viewDidLoad() {
      super.viewDidLoad()

      ble = BLE()
  }
}

class BLE: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
   private var manager: CBCentralManager!

   required override init() {
      super.init()
      manager = CBCentralManager.init(delegate: self, queue: nil)
   }

   func centralManagerDidUpdateState(_ central: CBCentralManager) {
      var consoleLog = ""

      switch central.state {
      case .poweredOff:
          consoleLog = "BLE is powered off"
      case .poweredOn:
          consoleLog = "BLE is poweredOn"
      case .resetting:
          consoleLog = "BLE is resetting"
      case .unauthorized:
          consoleLog = "BLE is unauthorized"
      case .unknown:
          consoleLog = "BLE is unknown"
      case .unsupported:
          consoleLog = "BLE is unsupported"
      default:
          consoleLog = "default"
      }
      print(consoleLog)
   }
}

这篇关于CoreBluetooth XPC连接无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆