Swift 3:蓝牙列表为空

时间:2017-04-26 11:06:48

标签: ios swift xcode bluetooth

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)

}

}

2 个答案:

答案 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])
    }