一个iPhone搜索许多iBeacons

时间:2014-06-28 18:57:13

标签: ios iphone xcode bluetooth-lowenergy ibeacon

我正在学习iBeacon编程。 iPhone是否可以在该区域搜索任何iBeacons并获取其UUID?

比如说,我在房间周围有一堆信标,我想看看用户何时接近灯塔。如何在不了解邻近事件之前的UUID的情况下查看用户是否靠近这些信标?

3 个答案:

答案 0 :(得分:1)

  

iPhone是否可以在该区域搜索任何iBeacons并获取其UUID?

简答:不。真实答案:是的,但你必须使用CoreBluetooth而不是CoreLocation。并且它可能很难。

iBeacons使用蓝牙4.0广告包发送信标'。可以在herehere找到数据包的结构。您需要使用CoreBluetooth来获取广告数据。您需要的数据将存储在advertisementData键下的CBAdvertisementDataManufacturerDataKey字典中。您需要首先剖析此数据,确定收到的广告是否来自iBeacon;第二,确定UUID;第三,确定主要和次要;第四,获得校准的TX功率(仅当您需要估计iOS设备和信标之间的距离时)。 编辑:这只能从OSX而不是iOS

完成

Radius Networks已经这样做了。他们的Locate Beacon应用可以接收任何iBeacon。

很多人会告诉你它无法完成,但它可以。

答案 1 :(得分:0)

“定位”Radius Networks应用程序似乎只显示具有预配置UUID的信标。如果你进入并在Apple的AirLocate样本中添加一个不同的UUID,它将不会被'Locate'选中。

更重要的是,(null)是我尝试在CBAdvertisementDataManufacturerDataKey字典中使用advertisementData时唯一返回的内容,因此我不确定这是否是一种解决方案。

有一点可以肯定的是,它绝对不是微不足道的。我的一位同事在MakeZine发现了一个很棒的帖子,它反向设计了Estimote信标。它的关键,现在有点超出我的理解范围,但它可能会为其他人提供一些见解。

答案 2 :(得分:0)

您需要使用自己的应用定义要监控的区域。并且必须至少通过UUID识别一个区域,所以基本上:你不能只扫描周围的所有信标来获取它们的UUID。

从技术上讲,您还可以授予用户访问权限,以便在应用程序中提供UUID扫描,但Apple反对这一点,因此很可能会从App Store中拒绝此类应用。

干杯。