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