Reputation: 1
if (central.state == .poweredOn) kontrolune girmiyor , bluetooth listesi gelmiyor ne yapabilirim ?
import CoreBluetooth import 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)
}
}
extension 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)
}
}
Upvotes: 0
Views: 729
Reputation: 2237
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)
}
}
Upvotes: 1
Reputation: 3494
You have to call scanForPeripheralsWithServices from outside the delegate method firstly
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])
}
Upvotes: 0