在IOS收到iBeacon广告数据包之前,我可以预先生成CoreBluetooth UUID吗



我想在我的应用程序中创建一个"官方"随机UUID,而不是IOS的核心蓝牙库从实际的iBeacon设备接收iBeacon数据包并在那时生成随机UUID。

让我解释一下。CoreBluetooth在接收到iBeacon数据包时,将创建一个随机生成的UUID,用于关联特定的iBeacon设备。使用CoreBluetooth,开发人员无法访问广告iBeacon设备的实际UUID、主要/次要、TX电源或MAC地址,他们只能访问IOS随机生成的UUID。IOS使用iBeacon的MAC地址作为其唯一标识符来生成随机UUID,而不是广播的iBeacon UUID。在测试中,我已经更改了几次iBeacon的UUID,当我发送广告数据包时,IOS仍然将其读取为相同的iBeacon。但是,当我更改iBeacon的MAC地址时,IOS会认为它是一个不同的iBeacon。IOS随机生成的UUID在IOS设备上运行的应用程序之间保持不变,直到设备重新启动。

我使用"官方"一词是因为,尽管看起来我可以使用UUIDWithString、UUIDWithData、UUIDWthNSUUID、在核心蓝牙库中生成具有特定功能的UUID

https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBUUID_Class/index.html

我想确保我正在创建IOS将注册的随机UUID,并与iBeacon正确关联。

我试图自己完成的IOS核心蓝牙过程通常在IOS第一次收到特定iBeacon的广告时运行。我的计划是先发制人,这样当它第一次从iBeacon接收到数据包时,IOS设备已经生成了随机UUID,并与该iBeacon关联。我的应用程序将包含一个MAC地址列表,用于从中生成这些随机UUID。

不幸的是,我认为这是不可能的。正如您所说,分配给检测到的蓝牙LE设备的UUID是由核心蓝牙内部生成的。没有公开的API可以改变它在这方面的行为。

相关内容

最新更新