if(central.state == .poweredOn)kontrolune girmiyor,bluetooth listesi gelmiyor ne yapabilirim?
导入CoreBluetooth 导入UIKit
class ViewController:UIViewController { var centralManager:CBCentralManager? var peripherals = Array()
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
centralManager = CBCentralManager(delegate: self, queue: DispatchQueue.main)
}
}
扩展名ViewController:CBCentralManagerDelegate { func centralManagerDidUpdateState(_ central:CBCentralManager){
print(central.state)
if (central.state == .poweredOn){
self.centralManager?.scanForPeripherals(withServices: nil, options: nil)
}
else {
print("nil")
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
peripherals.append(peripheral)
print(peripheral)
}
}
答案 0 :(得分:1)
swift 4
import CoreBluetooth
var bleCentralManager: CBCentralManager!
var arrayPeripheralList = [CBPeripheral]()
viewDidLoad(){
self.bleCentralManager = CBCentralManager(delegate: self, queue: nil)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state{
case .poweredOn:
central.scanForPeripherals(withServices: nil, options: nil)
default:
bleCentralManager.stopScan()
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if !(self.arrayPeripheralList.contains(peripheral)){
self.arrayPeripheralList.append(peripheral)
}
}
答案 1 :(得分:0)
您必须首先从委托方法外部调用 scanForPeripheralsWithServices
override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager(delegate: self, queue: GlobalBackgroundQueue, options: [CBCentralManagerOptionShowPowerAlertKey: true])
if self.manager!.state == CBCentralManagerState.PoweredOn {
self.manager?.scanForPeripheralsWithServices(nil, options: nil)
delay(2, closure: {
self.manager?.stopScan()
print("scanning stopped.")
})
}
}
func centralManagerDidUpdateState(central: CBCentralManager) {
if (central.state != CBCentralManagerState.PoweredOn) {
self.bluetoothStatus = false
}
}
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
peripherals.append(["p": peripheral, "a": advertisementData, "r": RSSI])
}