背景 iBeacon 区域范围的注意事项

Caveats for background iBeacon Region Ranging

苹果explicitly discourages background iBeacon Ranging:

To promote consistent results in your app, use beacon ranging only while your app is in the foreground.

If your app is in the foreground, it is likely that the device is in the user’s hand and that the device’s view to the target beacon has fewer obstructions.

Running in the foreground also promotes better battery life by processing incoming beacon signals only while the user is actively using the device.

我是否应该选择调皮在后台做一些测距(监控时进入信标范围后),我应该期待什么后果?(除了著名的10 -秒 运行 window 再次进入睡眠状态?

在大多数情况下,没有理由担心随意背景测距会耗尽电池电量。

我以前读过该声明,但我认为它没有任何意义,并且怀疑它是在 CoreLocation iBeacon 设计完成之前写的。 (该声明自 iOS 7 beta 以来一直存在。)

Apple iOS 通常强制执行 您一次只能在后台进行 10 秒,通常由 CLBeaconRegion 监控触发 entry/exit 事件。除非你的应用程序处于极端情况下,它一直看到信标区域进入和退出,否则 10 秒的后台蓝牙扫描不会消耗那么多电池。

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