我可以在 IOS 收到 iBeacon 广告数据包之前预先生成 CoreBluetooth UUID 吗?
Can I pre-generate CoreBluetooth UUIDs before IOS receives an iBeacon advertising packet?
我想在我的应用程序中创建一个“官方”随机 UUID,before/instead IOS 的 CoreBluetooth 库从实际 iBeacon 设备接收 iBeacon 数据包并生成随机 UUID那时。
让我解释一下。 CoreBluetooth 在接收到 iBeacon 数据包时,将创建一个随机生成的 UUID,它将用于关联到特定的 iBeacon 设备。使用 CoreBluetooth,开发人员无法访问广告 iBeacon 设备的实际 UUID、Major/Minor、TX Power 或 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,
我想确保我正在创建 IOS 将注册并与 iBeacon 正确关联的随机 UUID。
我自己尝试完成的 IOS CoreBluetooth 进程通常在第一次 IOS 收到特定 iBeacon 的广告时运行。我的计划是先发制人,以便它第一次从 iBeacon 收到数据包时,IOS 设备已经生成了随机 UUID 并与 iBeacon 关联。我的应用程序将包含一个 MAC 地址列表,用于从中生成这些随机 UUID。
不幸的是,我认为这是不可能的。正如您所说,分配给检测到的蓝牙 LE 设备的 UUID 是由 CoreBluetooth 在内部生成的。没有 public API 来改变它在这方面的行为。
我想在我的应用程序中创建一个“官方”随机 UUID,before/instead IOS 的 CoreBluetooth 库从实际 iBeacon 设备接收 iBeacon 数据包并生成随机 UUID那时。
让我解释一下。 CoreBluetooth 在接收到 iBeacon 数据包时,将创建一个随机生成的 UUID,它将用于关联到特定的 iBeacon 设备。使用 CoreBluetooth,开发人员无法访问广告 iBeacon 设备的实际 UUID、Major/Minor、TX Power 或 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,
我想确保我正在创建 IOS 将注册并与 iBeacon 正确关联的随机 UUID。
我自己尝试完成的 IOS CoreBluetooth 进程通常在第一次 IOS 收到特定 iBeacon 的广告时运行。我的计划是先发制人,以便它第一次从 iBeacon 收到数据包时,IOS 设备已经生成了随机 UUID 并与 iBeacon 关联。我的应用程序将包含一个 MAC 地址列表,用于从中生成这些随机 UUID。
不幸的是,我认为这是不可能的。正如您所说,分配给检测到的蓝牙 LE 设备的 UUID 是由 CoreBluetooth 在内部生成的。没有 public API 来改变它在这方面的行为。