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

标签 ios bluetooth-lowenergy uuid core-bluetooth ibeacon

我想在我的应用程序中创建一个“官方”随机 UUID,而不是 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,

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。

最佳答案

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

关于ios - 我可以在 IOS 收到 iBeacon 广告包之前预先生成 CoreBluetooth UUID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34327822/

相关文章:

ios - 列出 iOS 中的所有相册

ios - 使用搜索栏在结果的 UITableView 上显示原始 UITableView

c# - Windows 10 UWP 应用程序在启动画面后立即关闭/崩溃

java - java中获取磁盘的唯一标识符

python - Django UUIDField 默认值

ios - 当一个对象被分配给另一个对象时会发生什么?

ios - UISplitViewController 中未调用委托(delegate)方法

android - 获取蓝牙适配器时出现 Lint 错误

android - Android BLE 数据写入问题 - 获取错误 133

ios - 如何唯一标识 iOS 设备而不是使用 UUID 和 UDID