我是Corebluetooth的新手。我想在扫描时防止重复的外围设备。任何人都可以帮助我吗? 还有一个问题,如何在范围内连接外围设备?
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
{
if (peripheral.name != nil) && (peripheral.name == "EXP") ||
(peripheral.name == "EXP")
{
let key = peripheral.identifier.uuidString
let data = advertisementData.description
if let previous = datas[key]
{
if (previous != data)
{
print("Different \(String(describing: peripheral.name)): \ . (data)")
}
} else
{
print("\(String(describing: peripheral.name)): \(data)");
datas[key] = data
}
peripherals.append(peripheral)
lblDeviceCount.isHidden = false
lblDeviceCount.text = "\(peripherals.count) Devices Found"
tblPeriPheral.reloadData()
}
}
答案 0 :(得分:0)
您可以使用循环来防止重复的外围设备。如果新外设的标识符等于外设中的现有外设(您正在使用的变量),则不要将其附加到外设。
for existing in peripherals {
if existing.identifier == peripheral.identifier { return }
}
对于第二部分,您应该阅读RSSI,它将帮助您了解您是否离设备更近或更远。根据范围,您可以决定是否连接它。