我一直试图获取附近外围设备的名称。它通过显示其标识符RSSI但不显示名称来检测外围设备。我在iPhone 5s,Android手机,Mac OS中打开了蓝牙。我很困惑它正在检测哪一个。
我检查了LightBlue App中是否显示了该名称。它只显示“未命名”。请帮忙。
答案 0 :(得分:-1)
我使用这个:
首先,我使用一些选项进行扫描。
manager.scanForPeripherals(withServices: nil,
options: [CBCentralManagerScanOptionAllowDuplicatesKey:true, CBConnectPeripheralOptionNotifyOnConnectionKey: false, CBConnectPeripheralOptionNotifyOnDisconnectionKey: false, CBConnectPeripheralOptionNotifyOnNotificationKey: false])
请注意 CBCentralManagerScanOptionAllowDuplicatesKey 扫描选项,请仔细阅读。不一定要实现它。就我而言。
然后我要签入
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
如果名称存在于 AdvertisementData 或 CBPeripheral
实例中如果未公开姓名,则可以尝试连接
central.connect(peripheral, options: nil)
然后听 CBP外围设备委托
的方法func peripheralDidUpdateName(_ peripheral: CBPeripheral)
实际上可以获取更新名称的地方
我立即断开与他们的联系
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
central.cancelPeripheralConnection(peripheral)
}
内幕之所以发生,是因为外围设备可以广播分成几部分的数据,而且该名称通常不是先来者。