【问题标题】:how to get public Bluetooth Device Address using core_bluetooth如何使用 core_bluetooth 获取公共蓝牙设备地址
【发布时间】:2016-01-09 18:54:41
【问题描述】:
我们有一个蓝牙设备。蓝牙设备有一个公共蓝牙设备地址(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 值
【问题讨论】:
标签:
ios
objective-c
bluetooth-lowenergy
core-bluetooth
ios-bluetooth
【解决方案1】:
简单的答案很明显:不。
(实际上)不可能从生成特定 UUID 的种子中获取 BDA。假设实际上生成你的 UUID 的算法确实使用了你设备的 MAC 地址来生成它,我猜你不能保证你使用的 UUID 生成器就是这种情况,除非你可以访问 UUID 生成器代码或算法。
因为苹果在生成 UUID 时可能会使用设备的 MAC 地址、时间戳、哈希、UDID(iOS 设备)等其他组件以及其他一些因素,因此看起来也无法从 UDID 中获取它。
【解决方案2】:
Android 6 已移除读取自己设备 WIFI 和 BT MAC 地址的功能,它们将被硬编码为02:00:00:00:00:00。
这是“保护用户数据”或更准确地说是“隐私”。太多大型购物中心滥用这些地址来获取用户行为信息。
【解决方案3】:
在 iOS 上,无法获取设备的 MAC 地址,它由 CBPeripheral 类抽象,并在 os 内部由 identifier 属性标识。获取 MAC 地址的一种方法,实际上是最流行的,是在扫描响应中包含 MAC 地址。您可以向您的 BLE 设备制造商询问此功能。 MAC 地址也可以从 GATT 特征之一中读取。详情请咨询您的 BLE 制造商。