如何在CBCentralManagerDelegate外面找到蓝牙打开或关闭。 (IOS)

时间:2018-01-26 06:58:38

标签: ios swift bluetooth core-bluetooth

在我的应用程序中,当我启动应用程序时,我想检查设备蓝牙是打开还是关闭。 通常,我们可以在CBCentralManagerDelegate中得到它。这是我的代码

     var manager:CBCentralManager!

 in init() or viewDidLoad()
 {
     manager = CBCentralManager()
     manager.delegate = self
 }

// Delegate method

func centralManagerDidUpdateState(_ central: CBCentralManager) {

  if central.state == .poweredOn {

  }
  else if central.state == .resetting{

  }
  else if central.state == .unauthorized
  {

  }
  else if central.state == .unknown
  {

   }
  else if central.state == .unsupported
  {

  }
  else if central.state == .poweredOff{

     print("Bluetooth is not Connected.Please Enable it")
  }
}

但问题是,在这种方法中,只有在应用程序生命周期中更新状态时,我们才能获得蓝牙状态。 但是我们无法在没有任何状态变化的情况下在发布时检查。 那么我怎样才能在发布时检查蓝牙是打开还是关闭?

1 个答案:

答案 0 :(得分:0)

实例化CBCentralManager后不久,您将使用当前状态调用centralManagerDidUpdateState委托方法。无需显式更改蓝牙状态即可触发此行为。

我建议您使用适当的CBCentralManager初始化程序,以便您可以在初始化时指定您的委托:

manager = CBCentralManager(delegate: self, queue: nil) 

这是获得蓝牙电源状态的唯一方法。

没有报告当前蓝牙电源状态的同步方法。

您需要更新UI /显示警报或采取您响应委托方法调用所需的任何其他操作。

您可以在实例化CBCentralManager时指定option,导致iOS在当前未启用蓝牙时显示系统警报。

manager = CBCentralManager(delegate: self, queue: nil, options:
            [CBCentralManagerOptionShowPowerAlertKey:1])