如何检测用户的iPhone关闭或开启的蓝牙?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测用户的iPhone关闭或开启的蓝牙?相关的知识,希望对你有一定的参考价值。
我试图检测用户的iPhone开启或关闭的蓝牙。如果它是关我想发送通知给用户打开它。到目前为止,我已经这样做了:
import CoreBluetooth
class ViewController: UIViewController, CLLocationManagerDelegate,AVCaptureMetadataOutputObjectsDelegate,CBManager {
var myBTManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)
}
func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager!) {
print(#function)
if peripheral.state == CBManagerState.poweredOn {
print("Broadcasting...")
// myBTManager!.startAdvertising(_broadcastBeaconDict)
} else if peripheral.state == CBManagerState.poweredOff {
print("Stopped")
myBTManager!.stopAdvertising()
} else if peripheral.state == CBManagerState.unsupported {
print("Unsupported")
} else if peripheral.state == CBManagerState.unauthorized {
print("This option is not allowed by your application")
}
}
你能帮我解决一下这个问题,我是swift和CoreBluetooth技术的新手。我也使用Reachability来检测Wi-Fi连接,所以如果它也适用于蓝牙,我宁愿使用Reachability。
答案
- 你应该实现协议
CBPeripheralManagerDelegate
,所以用CBManager
替换你的class
定义行中的CBPeripheralManagerDelegate
。 - 在Swift 3中,
peripheralManagerDidUpdateState
的签名现在是:func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager)
- 您无法在课程创建时初始化
CBPeripheralManager
,因为self
仅在课程初始化后才可用。相反,让你的财产:var myBTManager: CBPeripheralManager?
并在viewDidLoad
中初始化它:override func viewDidLoad() { ... myBTManager = CBPeripheralManager(delegate: self, queue: nil, options: nil) ... }
另一答案
您可以使用CBCentralMangerDelegate
方法:
public func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
if central.state == .poweredOn {
//Bluetooth is on
} else if central.state == .poweredOff {
//Bluetooth is off
}
}
以上是关于如何检测用户的iPhone关闭或开启的蓝牙?的主要内容,如果未能解决你的问题,请参考以下文章