我已经在iOS设备上对iBeacons和CoreBluetooth进行了大量研究。您的帖子和研究都很棒。我学到了很多东西。不幸的是,我遇到了一个死胡同,因为这与我实际想要做的事情有关。
我正在阅读这篇文章:http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html ....
...并且它指出,如果没有接近UUID,您将无法对CoreBluetooth真正地做很多事情。就是说,如果我确实拥有它怎么办?
我想做的是将iBeacon放在给定位置周围。我将使用didEnterRegion
CLLocationManager委托(delegate)方法来知道何时进入该区域。我想用它来触发对信标的一些CoreBluetooth监视,以便可以在后台完成。我只需要RSSI和唯一的标识符(我现在可以不用主要和次要的标识符了),而我已经能够将其放在前台,而不能在后台。
我的印象是,如果我的应用程序设置了“bluetooth-central”(现在是“应用程序使用CoreBluetooth进行通信”),那么我仍然应该能够在后台获取此基本数据。
您能说明我要做什么吗?目前,似乎没有其他人尝试过此方法,我很乐意继续进行并分享它,因为如果我能够克服这一障碍,这似乎是一个可行的解决方法。
有什么想法吗?
最佳答案
如博客文章中所述,您无法从CoreBluetooth API中获取任何iBeacon标识符,因为iOS无法提供对封装这些标识符的原始广告数据的访问。
您可能可以进行关联。如果只有一个BluetoothLE设备可见,并且您刚刚看到使用CoreLocation API的iBeacon,则可以继续使用CoreBluetooth跟踪该信标,并按照您的建议阅读RSSI。
当多个BluetoothLE设备可见时,问题就来了。如果无法访问CoreBluetooth中的iBeacon标识符,您如何知道在CoreBluetooth中看到的哪个设备与在CoreLocation中看到的哪个iBeacon对齐?不幸的是,我认为没有任何办法可以使它们匹配。
关于ios - 与iBeacons一起使用CoreBluetooth,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20387327/