When I run the below code within my macOS application - many peripherals have no name - yet when I open "Bluetooth Preferences" on the same computer I can see their names.
What steps am I missing when scanning for bluetooth devices to get their names?
import Foundation
import CoreBluetooth
class Scanner: NSObject, CBPeripheralDelegate, CBCentralManagerDelegate {
var centralManager: CBCentralManager?
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch (central.state) {
case .poweredOn:
print("BLE Powered On - scanning")
centralManager?.scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey: true])
break
default:
print("Unknown Case")
}
}
internal func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber)
{
print("discovered: \(peripheral.name ?? "nil")")
}
func start() {
print("starting central manager")
centralManager = CBCentralManager(delegate: self, queue: nil)
}
}