【问题标题】:BLE scanning on iOS not returning UUID informationiOS 上的 BLE 扫描不返回 UUID 信息
【发布时间】:2014-11-02 06:53:19
【问题描述】:

我一直在调查 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

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

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

【问题讨论】:

    标签: ios bluetooth bluetooth-lowenergy ibeacon


    【解决方案1】:

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

    目前尚不清楚 Apple 为何这样做。显然,人们可以在 Android、Linux 甚至 OSX 等其他平台上读取原始字节。 (您已经演示了后者。)也许他们只是不希望人们绕过CoreLocation 来寻找 iBeacons。或者他们只是没有考虑清楚。

    不管是什么原因,恐怕你在 iOS 上运气不好。

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

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 2013-08-18
      • 1970-01-01
      • 2019-08-24
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多