我正在学习iBeacon编程。 iPhone是否可以在该区域搜索任何iBeacons并获取其UUID?
比如说,我在房间周围有一堆信标,我想看看用户何时接近灯塔。如何在不了解邻近事件之前的UUID的情况下查看用户是否靠近这些信标?
答案 0 :(得分:1)
iPhone是否可以在该区域搜索任何iBeacons并获取其UUID?
简答:不。真实答案:是的,但你必须使用CoreBluetooth而不是CoreLocation。并且它可能很难。
iBeacons使用蓝牙4.0广告包发送信标'。可以在here和here找到数据包的结构。您需要使用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中拒绝此类应用。
干杯。