在 iOS 应用程序中使用 iBeacon 时出现电池耗尽问题

Battery drain issue while using iBeacons in iOS application

我正在使用 iBeacon 技术开发 iOS7+ 应用程序(使用 estimote sdk 2.3.2)。现在,当应用程序在前台和后台处于 运行 时,我面临设备电池耗尽问题。 是否有任何选项可以在不使用 CLLocationManager 的情况下选择范围 iBeacons

范围iBeacons的唯一方法是使用CoreLocation,不幸的是它非常耗电。

但是,您可以仅在需要时打开 RangingMonitoring 消耗的能量少得多,足以确定您是否在 iBeacon 范围内。

我已经实现了一个逻辑来存储找到的 iBeacons 以及我最后一次看到它们的时间。当 Monitoring 告诉我我遇到了新的 iBeacon (如果我们离开他的范围并再次靠近它,它可能是一个旧的)我开始 Ranging:

- (void)beaconManager:(ESTBeaconManager *)manager didEnterRegion:(ESTBeaconRegion *)region { 
    [self.beaconManager startRangingBeaconsInRegion:self.beaconRegion];
}

然后在method方法中:

- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region { 

}

我正在检查我是否在过去一小时内看到了这个信标。如果我有,我会忽略它,如果没有,我会按照我的逻辑去做。之后我停止 Ranging:

[self.beaconManager stopRangingBeaconsInRegion:self.beaconRegion];

然后只有 Monitoring 在检查新的 iBeacons