是否可以搜索附近的所有iBeacons
?我知道可以通过UUID搜索iBeacons
。但我想在附近找到所有iBeacons
。
答案 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)
根据Radius Networks(AltBeacon规范的作者和android-beacon-library it's not possible to identify a beacon using CoreBluetooth
的作者