如何防止corebletooth中的重复外设?

时间:2018-04-03 13:14:39

标签: swift4 core-bluetooth

我是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()
     }

}

1 个答案:

答案 0 :(得分:0)

您可以使用循环来防止重复的外围设备。如果新外设的标识符等于外设中的现有外设(您正在使用的变量),则不要将其附加到外设。

for existing in peripherals {
    if existing.identifier == peripheral.identifier { return }
}

对于第二部分,您应该阅读RSSI,它将帮助您了解您是否离设备更近或更远。根据范围,您可以决定是否连接它。