2017-04-26 2 views
0

if(central.state == .poweredOn)kontrolune girmiyor、bluetooth listesi gelmiyor ne yapabilirim?Swift 3:Bluetoothリストが空です

輸入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) 
} 

}

拡張のViewController: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/努力して英語で尋ねると、あなたができることはほとんどありません。 ?{ self.manager .stopScan() プリント(「スキャン: –

答えて

3

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]) 
    } 
+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) 
    } 
} 
関連する問題