苹果explicitly discourages background iBeacon Ranging:

为了在您的应用中获得一致的结果,请仅在应用处于前台时使用信标范围调整。
如果您的应用位于前台,则可能是该设备在用户手中,并且该设备对目标信标的视图受阻的可能性较小。
仅在用户积极使用设备时,在前台运行还可以通过处理传入的信标信号来延长电池寿命。

我应该选择调皮并在后台进行一些测距(在监视时输入信标范围之后),我应该期待什么后果? (著名的10秒运行窗口除外,然后再次进入睡眠状态?

最佳答案

在大多数情况下,没有理由担心偶然背景范围内的电池消耗。

我之前已经阅读过该声明,但是我认为它没有任何意义,并且怀疑它是在CoreLocation iBeacon设计完成之前编写的。 (自iOS 7 Beta起,就一直在声明。)

Apple iOS通常会强制,您一次只能在后台运行10秒钟,通常由CLBeaconRegion监视进入/退出事件触发。除非您的应用程序处于极端状态,即看到信标区域一直进入和退出,否则10秒钟的背景蓝牙扫描就不能使用那么多电池。

当然,有些技术可以让您更频繁地进行测距,例如,请求位置背景模式进行恒定测距,或请求额外的3分钟的测距时间(如my blog post here中所述)。如果使用这些技术之一,则可能应该测试应用程序对电池的影响。但是,只要您负责任地做,我当然不会将这些事情描述为“顽皮的”。

08-19 11:53