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

时间:2015-12-17 06:16:48

标签: ios bluetooth-lowenergy uuid core-bluetooth ibeacon

我想在我的应用程序中创建一个'官方'随机UUID,之前/代替IOS的CoreBluetooth库从实际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,

在CoreBluetooth库中生成具有特定功能的UUID

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

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

我试图完成的IOS CoreBluetooth过程通常在IOS第一次收到特定的iBeacon广告时运行。我的计划是抢占这个,以便第一次从该iBeacon接收到数据包时,IOS设备已经生成了随机UUID并与该iBeacon相关联。我的应用程序将包含一个MAC地址列表,用于生成这些随机UUID。

1 个答案:

答案 0 :(得分:1)

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