5

我一直在对 iOS 设备上的 iBeacons 和 CoreBluetooth 进行大量研究。你的帖子和研究都很棒。我已经学了不少。不幸的是,我遇到了死胡同,因为它与我真正想做的事情有关。

我正在阅读这篇文章:http: //developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html ....

...并且它指出,如果没有proximityUUID,您无法真正使用CoreBluetooth 做很多事情。也就是说,如果我真的拥有它怎么办?

我想做的是在给定位置周围放置 iBeacons。我将使用didEnterRegionCLLocationManager 委托方法来了解我们何时进入该区域。我想用它来触发信标的一些 CoreBluetooth 监控,以便可以在后台完成。我只需要 RSSI 和一个唯一标识符(我现在可以不使用 Major 和 Minor),我已经能够在前台获得它,但在后台却不行。

我的印象是,如果我的应用设置了“bluetooth-central”(现在是“App Communicates using CoreBluetooth”),我仍然应该能够在后台获取这些基本数据。

你能解释一下我想要做什么吗?目前,似乎没有其他人尝试过这个,我很乐意让它继续下去并分享它,因为如果我能克服这个障碍,这似乎是一个可行的解决方法。

想法?

4

2 回答 2

4

正如建议的那样,这是不可能的,但几乎每个像 Kontakt.io 或 Estimote 这样的大制造商都使用特殊的 UUID 服务来处理标识符、电池和其他东西。

您可以使用CoreBluetooth编写自己的框架来识别这种iBeacon ,请记住 Service UUID 数据不是主要、次要、uuid 等。而只是设备的标识符,您绝对应该创建一个数据库或 plist Service 数据的 id 与 iBeacon 的主要和次要 UUID 匹配。

通过这种方式,您可以从 iBeacon 获取每个数据包并用它来做您的事情。

于 2014-10-09T19:41:56.557 回答
4

如博文中所述,您无法从 CoreBluetooth API 中获取任何 iBeacon 标识符,因为 iOS 不提供对封装这些标识符的原始广告数据的访问。

您也许可以进行相关性。如果只有一个 BluetoothLE 设备可见,并且您刚刚看到使用 CoreLocation API 的 iBeacon,您可以继续使用 CoreBluetooth 跟踪信标,按照您的建议读取 RSSI。

当多个 BluetoothLE 设备可见时,问题就来了。如果无法访问 CoreBluetooth 中的 iBeacon 标识符,您如何知道您在 CoreBluetooth 中看到的哪个设备与您在 CoreLocation 中看到的哪个 iBeacon 一致?不幸的是,我认为没有任何方法可以匹配它们。

于 2013-12-05T05:02:44.197 回答