如何在不指定UUID的情况下扫描iBeacon信号?

4

因为iBeacon信号只是具有预定义BLE配置文件的BLE广播,所以我认为我可以编写一个iOS应用程序,扫描BLE广播信号并分析是否发现任何iBeacon信号。但是如何做到呢?

  1. 如何扫描周围所有BLE广播信号?
  2. 如何区分BLE广播信号是否为iBeacon信号?
3个回答

12

不幸的是,在iOS上,您必须提供一个ProximityUUID才能看到iBeacons。在Android上,无论UUID如何,您都可以看到所有的iBeacons。此外,在iOS上,您不能使用CoreBluetooth API查看广告是iBeacons。

有关详细信息,请在此处查看。


1

依据我的经验,无论接近UUID如何,你都不能找到广播广告数据的所有信标。

这只能在Mac应用程序中完成,而不能在iOS中完成。

这将帮助您更好地理解点击此处

这是一个开源的信标扫描应用程序的链接,适用于Mac工作状态:点击此处


0

@davidgyoung的回答并不完全正确。在iOS上,您可以订阅进入/离开区域,但必须事先知道UUID。

但是,您可以使用常规的蓝牙设备扫描来检测所有蓝牙设备。然后,您可以查看广告数据以查看它是否实际上正在使用iBeacon标识符,并列出其iBeacon UUID。


2
你错了,iOS除了通过必须知道UUID的iBeacon调用之外,不会公开广告数据。其他平台没有这种限制。 - Chris Stratton
@ChrisStratton 我认为你错了。使用 centralManager:didDiscoverPeripheral:advertisementData:RSSI: 方法,广告数据是提供的。20个字节组成的UUID、major和minor只是其中的一部分。 - Bouke
我也尝试过。你确实可以看到一些东西,但是它们都是垃圾。我猜测iBeacon使用了一些无法被CoreBluetooth解密的加密技术。我相信这些API被设计成这样是为了不过多地暴露控制权。 - monkSinha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接