iOS Bluetooth mac адрес ближайших устройств - PullRequest
1 голос
/ 30 сентября 2019

Я хочу получить mac-адрес соседних устройств, используя bluetooh. Это тот формат, который я хочу получить.

FE: 4F: AD: 37: 67: 5D

У меня совершенно другой формат MAC-адреса внутри делегата

5962C58F-BAD1-65D4-DCAC-06BBB06307C6

Это те делегаты, которых я использую

CBCentralManagerDelegate

func centralManager (_ central: CBCentralManager, didDiscoverпериферийное устройство: CBPeripheral, advertisingData: [String: Any], rssi RSSI: NSNumber)

Это мой код

  func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
            if(!peripherals.contains(peripheral)) {
                peripherals.append(peripheral)
            }

            let identifier = "\(peripheral.identifier)"
            if let data = identifier.data(using: .utf8) {
                let mac_address = data.hexEncodedString().uppercased()
                let macAddress = mac_address.separate(every: 2, with: ":")
                if let name = peripheral.name {
                    print("\(name) \n\(peripheral.identifier)\nMAC_ADDRESS: \(macAddress)")
                }

            }
        }


        func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
            mainPeripheral = nil
            print("Disconnected" + peripheral.name!)
        }


        func centralManagerDidUpdateState(_ central: CBCentralManager) {
            print(central.state)
            switch central.state {
            case .unknown:
                print("unknown")
            case .resetting:
                print("resetting")
            case .unsupported:
                print("unsupported")
            case .unauthorized:
                print("unauthorized")
            case .poweredOff:
                print("poweredOff")
                UIView.animate(withDuration: 0.7) {
                    self.lblBluetoothAlert.alpha = 1.0
                }
                stopScanForBLEDevices()
            case .poweredOn:
                UIView.animate(withDuration: 0.7) {
                    self.lblBluetoothAlert.alpha = 0.0
                }
                print("poweredOn")
                scanBLEDevices()
            default:
                print("default")
            }
        }

1 Ответ

1 голос
/ 01 октября 2019

Core Bluetooth не предоставляет никакого доступа к периферийному MAC-адресу.

Чтобы выполнить требование, изложенное в комментарии, а именно идентифицировать периферийное устройство на основе данных из внутренней базы данных, вам необходимовам нужно, чтобы ваше периферийное устройство также выставляло свой идентификатор (возможно, его MAC-адрес, возможно, какой-то другой уникальный идентификатор) через характеристикуВаше приложение может затем подключиться к целевым периферийным устройствам и запросить характеристику.

...