iOS上的BLE扫描不返回UUID信息

时间:2014-09-08 23:36:21

标签: ios bluetooth bluetooth-lowenergy ibeacon

我一直在研究iOS蓝牙扫描的问题。当在iOS上扫描BLE广告时,iBeacon的UUID不是我期望的(根据Radius Networks,即所述信标的提供者的信标的默认UUID)。事实上,它完全不相关。但令人好奇的是,在Mac OS X Mavericks下运行的完全相同的代码运行得很好。因此,我开始相信它只是操作系统正在做的事情。

以下是iOS实施:https://github.com/syoutsey/iOSBLE

Mac OS X实施:https://github.com/syoutsey/MacBLE

这两个回购都是基于Swift的。我在Objective-C中编写了相同的结果,但结果相同。

我已经阅读了Radius Networks的文章,其中没有正确返回设备UUID(http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html),但很奇怪RadBeacon扫描仪应用程序(Radius Networks)能够正确识别UUID。我的那个应用程序在做什么不是?

1 个答案:

答案 0 :(得分:1)

你偶然发现iOS中一个不适用于OSX的奇怪限制。仅在iOS上,如果符合iBeacon规范,CoreBluetooth将阻止读取蓝牙LE广告数据的能力。

目前还不清楚苹果为何会这样做。显然,人们可以读取其他平台上的原始字节,如Android,Linux甚至OSX。 (你已经证明了后者。)也许他们只是不希望人们绕过CoreLocation来寻找iBeacons。或许他们只是没想到它。

无论是什么原因,我担心你在iOS上运气不好。

RadBeacon扫描仪使用CoreBluetooth连接到设备,并使用Gatt读取标识符。它没有从广告中获取标识符。