我遇到了关于CoreBluetooth Framework的问题。
例如,我有两个设备,每个设备都执行广告和扫描。因此,我在每个上都使用了CBCentralManager
和CBPeripheralManager
。
因此,为了简化问题,我们假设 Device1 正在广播并 Device2 扫描。
当 Device2 上的CBCentralManager
发现 Device1 时,回调
centralManager:didDiscoverPeripheral:advertisementData:RSSI:
被调用,我可以通过调用[peripheral.identifier UUIDString]
来获取 Device1 标识符。
然后我如何获取本地设备( Device2 )标识符? 我的意思是,如果两个设备都是广告, Device1 也会发现 Device2 并获取它的外围设备标识符,但 如何在 Device2 上获取此标识符(某种自我地址)?
P.S。我知道这个标识符对于每个设备都不是唯一的,并且可以随时间变化,这不是问题。
答案 0 :(得分:7)
不幸的是你不能这样做。 [peripheral.identifier UUIDString]
返回的标识符由iOS在接收设备上自动生成。它由发射器Mac地址(不会改变)和iOS开始看到设备的时间(确实发生变化)播种。
由于第二个因素是不可预测的,并且id生成算法未发布的事实,您无法预测此ID将在发送器端。
底线,如果您想要一个可预测的唯一ID,则不能使用此字段