附近设备的iOS蓝牙MAC地址

6

我想使用蓝牙获取附近设备的MAC地址,以下是我想要获取的格式。

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

在代理中,我有完全不同格式的mac地址。

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

这些是我正在使用的代理。

CBCentralManagerDelegate

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [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")
            }
        }

5
在 iOS 上,我们没有真正的“MAC地址”,它们通过操作系统进行“转换”以避免过多的跟踪。在进行配对之前(不仅是“连接”,而是真正的配对),它们可能每15分钟更改一次。并且你是否查看了“identifier”的文档?它是一个UUID,不是Mac地址,不具有相同的长度/格式... - Larme
同意。这是故意不可能的。你想要解决什么问题? - Rob Napier
我从后端获取了设备的MAC地址。我想确认该设备(具有该MAC地址)是否在蓝牙范围内。我正在扫描所有设备并浏览MAC地址以进行确认。 - Taimur Ajmal
1个回答

3

Core Bluetooth并未提供任何访问外围设备MAC地址的方法。

为了满足您在评论中提出的需求,即根据后端数据库中的数据识别外围设备,您需要使您的外围设备通过一个特征暴露其标识符(可能是MAC地址,也可能是其他唯一标识符)。然后,您的应用程序可以连接到目标外围设备并查询该特征。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接