use*_*495 5 ios ibeacon beacon
我有一个需要各种信标的项目,我看了很多都使用CLLocationManager和的示例代码CLBeaconRegion。我的问题是,didRangeBeacons回调仅每秒被调用一次。
尽管我还没有找到任何特定于信标的代码示例,但我是否认为CoreBluetooth可以让我更好地控制我的应用扫描信标的频率是否正确?
我的想法是,如果我可以以更高的速率(例如200毫秒)扫描信标,则可以在过滤功能中使用更多的rssi值,从而获得更准确的接近度,而无需花费太长时间。我是否可以假设这一点?
谁能指出我有关将CoreBluetooth与信标一起使用的任何示例代码/教程(如果值得这样做的话)?
如果您使用 CoreBluetooth 而不是 CoreLocation 来扫描信标,则您会为检测到的每个广告数据包获得一个回调,而对于 CoreLocation,您将获得每秒一个回调。 这两种方法各有优缺点,因此准确了解每种方法的工作原理以做出正确的选择非常重要。优缺点受信标广告速率影响较大,标准iBeacon广告速率为10Hz。
使用 CoreLocation 测距
以下方法将每秒获得一次回调,但仅适用于匹配 iBeacon 布局并匹配该布局中的 ProximityUUID 的 BLE 广告,该布局已注册为作为CLBeaconRegion对象的一部分进行测距。当满足这些条件时,无论何时都会调用以下回调在该时间间隔内检测到多少信标数据包,:
locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion).
CLBeacon数组中的每个对象beacons都有一个rssi字段。该字段包含在过去一秒间隔内检测到的所有信标数据包的平均 RSSI。
如果信标以 10 Hz 的频率进行广告,则该 RSSI 读数将是过去一秒内收到的 8-10 个数据包的平均值(由于无线电噪声、冲突和干扰,通常只有 80-90% 的数据包被接收)。
如果信标以 1Hz 或更低的频率进行广告(典型的电池信标试图节省电量),则平均值中将只包含一个 RSSI 读数。(无法知道回调返回的 rssi 值中进行了多少检测。)
因此,虽然您无法访问每次检测的 RSSI 值,并且您无法控制平均间隔,但您确实可以从多次检测中受益,因为 RSSI 值是平均的,并且噪音比没有一直只有一读。 因此,CoreLocation 为您提供与 CoreBluetooth 一样高的准确性,前提是您愿意接受其硬编码的平均间隔。
该CLBeacon对象还具有基于 rssi 派生值的accuracy和字段,proximity这些值是在更长的时间间隔内过滤的(实验表明它大约为 20 秒)。API 无法控制此平均间隔,对于某些需要快速更新距离估计值的应用程序,20 秒是一个非常长的延迟。
使用 CoreBluetooth 扫描
这通常通过设置允许重复结果的标志来完成:
centralManager.scanForPeripherals(withServices: [], options: [CBCentralManagerScanOptionAllowDuplicatesKey: true] )
当上述扫描开始时,对于检测到的每个蓝牙广告都会进行以下回调:
centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
此回调中的 rssi 数字是来自单个数据包检测的原始值。如果您的信标以 10 Hz 的频率进行广告,您将在此方法上每秒收到 8-10 个回调(同样,不是 100% 的数据包被接收),您可以根据自己的喜好平均或过滤您的 RSSI。这使您可以对使用 rssi 进行细粒度控制,并且您可以对任意平均间隔进行距离估计。
上述动机促使我开发了开源iOS Beacon Tools,它允许检测CoreBluetooth培根并根据在任意指定的平均间隔上收集的 rssi 计算距离估计值。
但是,使用 有几个缺点CoreBluetooth:
iBeacon 数据包无法解码,因为操作系统会过滤掉与其布局匹配的任何数据包的数据负载。因此,您必须使用类似 AltBeacon 的布局,或使用 Eddystone 框架。
像 AltBeacon 这样的制造商广告不是在后台投放,而是在前台投放。
像 Eddystone 这样的服务广告是在后台投放的,但速度非常非常慢。所以它对rssi数据收集没有用。
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |