在我的应用程序中,当我启动应用程序时,我想检查设备蓝牙是打开还是关闭。 通常,我们可以在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")
}
}
但问题是,在这种方法中,只有在应用程序生命周期中更新状态时,我们才能获得蓝牙状态。 但是我们无法在没有任何状态变化的情况下在发布时检查。 那么我怎样才能在发布时检查蓝牙是打开还是关闭?
答案 0 :(得分:0)
实例化CBCentralManager
后不久,您将使用当前状态调用centralManagerDidUpdateState
委托方法。无需显式更改蓝牙状态即可触发此行为。
我建议您使用适当的CBCentralManager
初始化程序,以便您可以在初始化时指定您的委托:
manager = CBCentralManager(delegate: self, queue: nil)
这是获得蓝牙电源状态的唯一方法。
没有报告当前蓝牙电源状态的同步方法。
您需要更新UI /显示警报或采取您响应委托方法调用所需的任何其他操作。
您可以在实例化CBCentralManager
时指定option,导致iOS在当前未启用蓝牙时显示系统警报。
manager = CBCentralManager(delegate: self, queue: nil, options:
[CBCentralManagerOptionShowPowerAlertKey:1])