如何使用core_bluetooth获取公共蓝牙设备地址

我们有一个蓝牙设备。蓝牙设备有一个公共蓝牙设备地址(BDA)。在Android中他们得到蓝牙像(30:03:5B:00:15:12) 。我只能获得这样的设备名称和设备UUID

 -(void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { NSLog(@"Discovered peripheral %@ (%@) (%@)",peripheral.name,peripheral.identifier.UUIDString); //PHARMACELL CAREOUSEL (0BEF07EA-7680-4223-2D5E-6CE159333F7E) } 

请向我们提供如何获得BDA值的任何指南

简单的答案显然是:不。 (实际上)不可能从生成特定UUID的种子中获取BDA。 前提是实际上生成UUID的算法确实使用了设备的MAC地址来生成它,我想您不能保证您使用的UUID生成器就是这种情况,除非您有权访问UUID生成器代码或算法。

由于苹果在生成UUID时可能会使用设备的MAC地址,其他组件如时间戳,散列,UDID(iOS设备)以及其他一些因素,因此它看起来也无法从UDID中恢复。

Android 6具有REMOVED读取自己的设备WIFI和BT MAC地址的能力,它们将被硬编码为02:00:00:00:00:00 。 这是“保护用户数据”或更正确的“隐私”。 太多的大型商场滥用收获这些地址来获取用户行为信息。

在iOS上,无法获取设备的MAC地址,它由CBPeripheral类抽象,并由os identifier属性在内部identifier 。 获得MAC地址的一种方法是在扫描响应中包含MAC地址,这实际上是最受欢迎的。 您可以向BLE设备制造商询问此function。 此外,可以从GATT特征之一读取MAC地址。 请咨询您的BLE制造商以获取更多详情。