将CoreBluetooth与iBeacons配合使用

d2b*_*rke 5 bluetooth ios core-bluetooth bluetooth-lowenergy ibeacon

我在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"),我仍然可以在后台获取这些基本数据.

你能否阐明我正在做的事情?目前,它似乎没有其他人尝试过这个,我很乐意让它继续下去并分享它,因为如果我能够克服这个障碍,它似乎是一个可行的解决方案.

思考?

dav*_*ung 4

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

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

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

  • @d2burke iOS 为您提供的通用 BLE 设备的 UUID 是 iOS 本地发明的,作为您的应用程序引用 BLE 设备的一种方式,它与 iBeacon 广告数据包中广播的区域 UUID 无关。测试证实,两个 iOS 设备监听同一个 BLE 设备会为其分配*不同的*本地设备 UUID,因此预映射不太可能给您带来任何好处。 (2认同)