使用核心蓝牙而不是iBeacon - 任何下行?

时间:2014-06-17 15:11:54

标签: ios bluetooth core-bluetooth ibeacon proximity

我正在开展一个项目,我首先想要将设备宣传为iBeacon,并且可以同时通过Core Bluetooth连接到该设备。除了这不容易实现(设备不能同时作为iBeacon和CB设备做广告)之外,我注意到iBeacon部分似乎没必要 - 发现使用Core Bluetooth的外围设备似乎与发现iBeacons基本相同。

我的第一个问题:我是否正确地假设这个?或者iBeacon是否提供CB中的中心/外围设备不提供的任何内容?特别是关于背景广告/搜索?


我现在唯一能看到的问题是CLBeacon给了我一个rssi和一个accuracy(从此,计算了近似的proximity) 。使用Core Bluetooth,centralManager:didDiscoverPeripheral:advertisementData:RSSI:只给我一个RSSI。有没有办法在这里检索准确性,所以我可以计算一个接近度?这对我来说很重要,我想只依靠RSSI接近会给我不太准确的结果吗?

我的第二个问题:我可以获得核心蓝牙中使用iBeacon获得的accuracy或类似的措施来计算接近度吗?

1 个答案:

答案 0 :(得分:4)

您可以使用我在此处发布的算法来计算您自己的RSSI距离估算值:

https://stackoverflow.com/a/20434019/1461050

技巧是你需要在20秒左右的时间窗口内平均进行尽可能多的RSSI测量,以减少估计噪声。

使用CoreLocation API检测标准iBeacons与使用CoreBluetooth检测自定义信标的主要优点是:

  1. iBeacon标准提供各种廉价的现成硬件。
  2. CoreLocation可以在后台扫描iBeacons(可能使用iPhone 5+上的硬件辅助),可以相对快速地自动启动您的应用,即使用户自启动后没有手动启动它。从iOS 7.1开始,即使用户从任务切换器中杀死了应用程序,如果检测到iBeacon,CoreLocation也可以将其重新启动到后台。我不相信CoreBluetooth可以实现所有这一切。
  3. iBeacon传输允许您轻松读取iOS中的UUID /主要/次要标识符组合而无需配对。这20个字节的数据(主要和次要字段可以设置为任意值)比从16字节蓝牙服务UUID获得的数据更多。
  4. 您不必滚动自己的软件进行距离估算。