我正在开发一个IOS应用程序,用于检测Eddystone和iBeacon信标。我用Corelocation和Corebluetooth进行了实现。我想在后台检测信标,因此也设置了后台模式。我发现,在后台运行一分钟后,扫描的频率大大降低(每五分钟扫描一次)。是否有办法为IOS应用程序设置后台扫描频率?对于我正在开发的应用程序使用情况来说,5分钟似乎是很长的时间。另外,如果另一个信标在范围内,是否有任何方法唤醒应用程序?
使用CoreBluetooth在iOS上后台扫描BLE设备可能相对较慢,正如您所建议的那样,您5分钟的检测时间并不罕见。单独使用CoreBluetooth不能增加扫描频率。然而,CoreLocation更加优化了检测速度,但它仅限于iBeacon格式。您可以将发送iBeacon帧的信标与发送Eddystone帧的信标组合起来(用于其他目的),这样可以提高Eddystone检测时间的速度。如果在接收到iBeacon监控后台事件时开始搜索信标,则会发现您的Eddystone检测时间也会加快。这个技巧允许您使用CoreLocation范围进行CoreBluetooth扫描 - 在幕后它们实际上是相同的。