2017-04-26 90 views
0

if(central.state == .poweredOn)kontrolune girmiyor,bluetooth listesi gelmiyor ne yapabilirim?Swift 3:Bluetooth list is empty

进口CoreBluetooth 进口的UIKit

类的ViewController:UIViewController的{VAR centralManager:CBCentralManager? VAR外设=阵列()

@IBOutlet weak var tableView: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    centralManager = CBCentralManager(delegate: self, queue: DispatchQueue.main) 
} 

}

扩展视图控制器:CBCentralManagerDelegate { FUNC centralManagerDidUpdateState(_中央: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) 

} 

}

+1

“但是,我们应该被迫适应随机人类的语言在我们的社区的想法是完全不可持续的。” - https://stackoverflow.blog/2009/07/23/non-english-question-policy/努力工作,用英语问问,这是你至少可以做到的。 –

回答

3

你必须调用scanForPeripheralsWithServices from委托方法首先

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]) 
    } 
+0

对不起,它变成空白 –

+0

请增加延迟时间并检查蓝牙设备必须在可到达区域 –

+0

我得到一个错误加延迟时间 –

1

迅速外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) 
    } 
} 
相关问题