搜索所有iBeacons而不仅仅是特定的UUID

时间:2013-09-13 10:38:51

标签: core-location ios7 ibeacon

是否可以搜索附近的所有iBeacons?我知道可以通过UUID搜索iBeacons。但我想在附近找到所有iBeacons

5 个答案:

答案 0 :(得分:12)

iBeacon是一个区域,具有UUID的定义属性。因此,您只能搜索与UUID匹配的那些。 在找到具有特定UUID的一个或多个UUID之后,您可以使用委托回调找出哪个最接近,其中信标存储在按距离排序的数组中。

这里有很好的示例代码,还有一个非常详细的WWDC视频会话:“核心位置有什么新内容”

答案 1 :(得分:7)

iBeacons是比普通BLE外设更高级的构造。根据Apple文档可以确定的信标,信标与其服务UUID相关联。也就是说,一个信标系列是一个“区域”,你根据信标的范围和可见度进入和离开一个区域,而不是相反。不幸的是,Apple使用了区域这个术语,我们大多数人可能都认为它与MapKit有关,所以这增加了一般的混乱

以下是坏消息:您只能扫描您知道的ProximityUUID,没有“通配符”proximityUUID。另外,CLBeacons不会暴露更低级别的CoreBluetooth内核,所以如果你想找到碰巧在你附近的所有信标,你将不得不使用CoreBluetooth,扫描外围设备,然后查看返回的外围设备并查询每一个他们找到信标。当然Apple既没有注册(使用Bluetooth SIG),也没有(但是)发布了iBeacon特性,所以你需要一个BT嗅探器来反向设计来自任何其他BLE设备的iBeacon。

答案 2 :(得分:5)

每个APP都会使用它自己的特定UUID,使用“major”和“minor”整数值来区分信标。

例如,UUID将与一系列商店相关联,主要商店将识别商店,轻微过道,甚至是一组商品。

扫描未知的UUID不会非常有用,因为您的应用程序不知道该如何处理这些信息。

使用终端中的“uuidgen”命令一劳永逸地生成UUID。

遗憾的是,实际上没有与信标通信的协议,因此没有标准来获取信标的位置或任何其他有用的信息。

如果我们可以打开与信标的连接(通常是最近的信标)并从中获取其他数据,而不必在同一个WIFI网络上,那将会好得多。

您必须使用bonjour通过WIFI与设备通信,或使用主要和次要ID从某种Web服务获取数据。

答案 3 :(得分:5)

不幸的是,在没有首先知道proximityUUID值的情况下,您现在无法搜索任意iBeacon。我已经尝试直接写入COREBluetooth,虽然你可以发现并连接到你所在地区的传输信标,但你得到的是与BLE UUID无关的乱码。因此,您甚至无法确认您连接的外围设备实际上是iBeacon。

这似乎不是BLE规范的限制,而是Apple强加的限制。似乎Android平台不存在此限制。

在此差距缩小之前,Android在此领域将比iOS更具优势。

我不同意先前的评论,即扫描UUID将毫无用处。相反,如果您知道信标UUID,则可以在云中创建信标/位置/主题的地图,并使用它来使用Web服务进行导航(假设信标已修复)。您可以群集数据源,以便最终为所有想要编写位置应用程序的人提供非常丰富的信标UUID /位置对数据库。也许这就是苹果隐藏信息的原因;为了自己的目的,他们可能会把它拿回来。

答案 4 :(得分:0)