顯示所有藍芽低功耗(BLE)的名稱
- 在這個例子中,我有一個帶有單個 BLE 裝置啟用的受控房間。
- 你的類應該擴充套件 CBCentralManagerDelegate。
- 實現方法:centralManagerDidUpdateState(_ central:CBCentralManager)。
- 使用全域性佇列在搜尋裝置時不凍結螢幕。
- 例項化 CBCentralManager 並等待回撥 centralManagerDidUpdateState 響應。
class BLEController: CBCentralManagerDelegate{
var cb_manager: CBCentralManager!
var bles : [CBPeripheral] = []
override func viewDidLoad() {
super.viewDidLoad()
cb_manager = CBCentralManager(delegate: self, queue: DispatchQueue.global())
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("UPDATE STATE - \(central)")
}
}
回撥到 centralManagerDidUpdateState 表示 CoreBluetooth 準備就緒,因此你現在可以搜尋 BLE。更新 centralManagerDidUpdateState 程式碼以在準備好時搜尋所有 BLE 裝置。
func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("UPDATE STATE - \(central)")
SearchBLE()
}
func SearchBLE(){
cb_manager.scanForPeripherals(withServices: nil, options: nil)
StopSearchBLE()
}
func StopSearchBLE() {
let when = DispatchTime.now() + 5 // change 5 to desired number of seconds
DispatchQueue.main.asyncAfter(deadline: when) {
self.cb_manager.stopScan()
}
}
SearchBLE()
搜尋 BLE 裝置並在 5s 後停止搜尋- cb_manager.scanForPeripherals(withServices:nil,options:nil)查詢範圍內的每個 BLE。
StopSearchBLE()
將在 5s 後停止搜尋。- 每個發現的 BLE 都會回撥 func centralManager(_ central:CBCentralManager,didDiscover peripheral:CBPeripheral,advertisementData:[String:Any],rssi RSSI:NSNumber)
func centralManager(_ central: CBCentralManager, didDiscover peripheral:
CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
guard let name = peripheral.name else {
return
}
print(name)
bles.append(peripheral)
}