使用CoreBluetooth与iBeacons

我在iOS设备上对iBeacons和CoreBluetooth做了相当多的研究。 你的post和研究很棒。 我学到了很多东西 不幸的是,我遇到了一个死胡同,因为它与我真正想做的事情有关。

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

…它指出,你不能真正用CoreBluetooth没有proximityUUID很多。 那就是说,如果我真的拥有它呢?

我想要做的就是把iBeacons放在给定的位置。 我将使用didEnterRegion CLLocationManager委托方法来了解我们何时进入该区域。 我想用它来触发一些CoreBluetooth监视信标,这样可以在后台完成。 我只需要RSSI和一个唯一的标识符(我现在可以在没有Major和Minor的情况下做到这一点),我已经能够在前台获得,而不是在后台。

我的印象是,如果我的应用程序具有“蓝牙中央”(现在是“使用CoreBluetooth进行应用通信”),我仍然可以在后台获得这些基本数据。

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

思考?

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

你也许可以做相关性。 如果只有一个BluetoothLE设备可见,并且您刚刚看到使用CoreLocation API的iBeacon,则可以继续使用CoreBluetooth跟踪信标,并根据您的build议阅读RSSI。

当多个BluetoothLE设备可见时,就会出现问题。 如果不能访问CoreBluetooth中的iBeacon标识符,您将如何知道您在CoreBluetooth中看到哪个设备与您在CoreLocation中看到哪个iBeacons? 不幸的是,我不认为有什么方法可以与之匹配。

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

您可以编写自己的框架,使用CoreBluetooth来识别这种iBeacon ,记住Service UUID数据不是主要的,次要的,uuid等等。但是只是一个设备的标识符,您应该创build一个数据库或plist在服务数据的id和UUID,iBeacon的主要和次要之间匹配。

通过这种方式,您可以从iBeacon获取每个数据包,并使用它来完成您的任务。