关于 ibeacon:Android 和 iOS 如何在没有电池问题的情况下扫描蓝牙信标?

How do Android and iOS scan for Bluetooth beacons without battery issues?

如果我想在 Android 或 IOS 中开发自己的 iBeacon 服务,它必须是实用的。这意味着客户可以在不缺电池的情况下使用我的服务。

我认为即使 iBeacon 技术基于蓝牙低功耗,它仍然可能缺乏电池。这是因为必须始终运行应用程序才能扫描 iBeacon 设备。

据我所知,iOS 有自己的电池问题解决方案。当 IOS 应用程序检测到 iBeacon 设备时,它会在后台运行,并且 IOS(不是应用程序)会自行扫描特定的 UUID,而不是附近的所有 UUID。这就是他们节省能源的方式。我说的对吗?

但对于 Android,不提供任何电池问题的解决方案。更重要的是,
当 Android 应用程序检测到 iBeacon 设备时,它会扫描附近的所有 UUID 并处理所有内容,而不是 Android 操作系统。是这样吗?

所以在我开始开发自己的服务之前,我担心这个电池问题。
用电池会好吗?
有什么好的解决办法分享吗??请问各位大神是怎么解决这个问题的??


Android iBeacon 库的 Pro 版本带有一个自动节电程序,当应用程序处于后台以节省电池时,它会减慢扫描速度。开源的 Android iBeacon 库还允许配置前台和后台蓝牙扫描速率,并提供调用方法来告诉库应用程序何时处于前台和后台。

在 iOS 上,省电策略与此类似。当前台没有应用程序为 iBeacons 进行测距时,蓝牙扫描不会持续执行。背景扫描的确切频率没有公布,但我已经测量过它在装有 iOS 7.1 的 iPhone 4S 上每 15 分钟发生一次。

扫描特定 UUID 不会影响电池寿命。在操作系统级别,蓝牙 LE 扫描会查找任何正在做广告的蓝牙 LE 设备,无论它是 iBeacon 还是具有特定 UUID。特定 UUID 的过滤器在更高级别的软件中处理。