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

最佳答案

范围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

10-08 01:39