如何判断CLLocationManager是否正在主动扫描信标?

时间:2014-05-05 17:31:27

标签: ios ibeacon

当您将iOS设备设置为信标(外围角色)时,您可以通过调用CBPeripheralManager.isAdvertising来查询其状态。我找不到相应的查询设备是否正在扫描CLLocationManager上的信标(中心角色)。有任何想法吗?

更新

鉴于David的回答,我使用特定的UUID封装了设置CLBeaconRegion的代码,并添加了一个布尔变量,该变量在CLLocationManager上调用startMonitoringRegion和stopMonitoringRegion时会被更改。

1 个答案:

答案 0 :(得分:0)

我不相信这是可能的。虽然CoreLocation的iBeacon API使用蓝牙LE和CoreBluetooth,但Apple似乎已经花了一些时间来隐藏这个实现。没有明显的方法可以查看蓝牙LE扫描是否在特定时间点进行。

一般来说,当前景中的iBeacons的应用范围时,蓝牙LE扫描始终正在进行。当应用监控用于iBeacons(在前台或背景中)或在背景范围内时,间接证据表明信号扫描每隔几分钟发生一次,其中确切的数字从1到15不等,具体取决于手机型号和状态。我知道无法以编程方式检测启动和停止的确切时间,尽管可以通过iBeacon监控进入/退出时间来推断。如果查看下图,蓝点表示一个特定测试用例的推断扫描时间。我在this blog post

中描述了我如何推断这一点的细节

detection times shown in blue