我正在开展一个项目,我首先想要将设备宣传为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
或类似的措施来计算接近度吗?
答案 0 :(得分:4)
您可以使用我在此处发布的算法来计算您自己的RSSI距离估算值:
https://stackoverflow.com/a/20434019/1461050
技巧是你需要在20秒左右的时间窗口内平均进行尽可能多的RSSI测量,以减少估计噪声。
使用CoreLocation
API检测标准iBeacons与使用CoreBluetooth
检测自定义信标的主要优点是:
CoreLocation
可以在后台扫描iBeacons(可能使用iPhone 5+上的硬件辅助),可以相对快速地自动启动您的应用,即使用户自启动后没有手动启动它。从iOS 7.1开始,即使用户从任务切换器中杀死了应用程序,如果检测到iBeacon,CoreLocation
也可以将其重新启动到后台。我不相信CoreBluetooth
可以实现所有这一切。