Swift MacOS:BLE扫描始终将nil作为peripheral.name返回
我正在扫描MacOS上的可扩展设备。我正在使用以下代码:Swift MacOS:BLE扫描始终将nil作为peripheral.name返回,swift,macos,bluetooth,bluetooth-lowenergy,Swift,Macos,Bluetooth,Bluetooth Lowenergy,我正在扫描MacOS上的可扩展设备。我正在使用以下代码: final class BLERepository: NSObject { private var _centralManager: CBCentralManager! override init() { self._centralManager = CBCentralManager(delegate: nil, queue: nil) super.init() self._centralManager.
final class BLERepository: NSObject {
private var _centralManager: CBCentralManager!
override init() {
self._centralManager = CBCentralManager(delegate: nil, queue: nil)
super.init()
self._centralManager.delegate = self
}
}
extension BLERepository: CBPeripheralDelegate, CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
_centralManager.scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
default:
break
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("\(peripheral.name)")
}
}
外围设备名称始终为零。但据我所知,cbcentralmanagerscanoptionalLowDuplicatesky:true
应该可以解决这个问题,我会找到副本,但名称从未生效。
我试着使用Xcode蓝牙工具或其他一些扫描仪,所有这些扫描仪都知道我周围设备的名称 您是否尝试过从广告数据中提取名称?这应该更为一致。我试图在广告数据{print(“广告数据:\(广告)”)中为广告设置
,
-什么都没有((BLE设备在其广告包中不包含名称是完全正常的。空间非常有限,名称可能太长而无法容纳。您有理由相信这些设备在广告名称吗?(这与有名称不同。)您对BLE扫描仪(如LightBlue或BlueSee)看到了什么?是的。我在原始问题中提到了这一点-不同设备上的第三方扫描仪会获得名称。这是否回答了您的问题?