我正在使用iOS7+技术开发一个iBeacon应用程序(使用EstimoteSDK2.3.2)。现在,我正面临设备电池耗尽问题,而应用程序正在运行前景和背景。可以选择不使用iBeacons而对CLLocationManager进行测距。
发布于 2015-01-27 07:18:33
实现iBeacons范围的唯一方法是使用CoreLocation,不幸的是,它非常耗电。
但是,只有在需要时才能打开Ranging。Monitoring消耗的能量要少得多,这足以确定您是否在iBeacon范围内。
我实现了一个逻辑来存储找到的iBeacons,当我最后一次看到它们的时候。当Monitoring告诉我我遇到了新的iBeacon (如果我们离开他的靶场,再靠近它的话,它可能是旧的),我开始Ranging
- (void)beaconManager:(ESTBeaconManager *)manager didEnterRegion:(ESTBeaconRegion *)region {
[self.beaconManager startRangingBeaconsInRegion:self.beaconRegion];
}然后在方法上:
- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region {
}我正在检查我是否在最后一小时内见过这个信标。如果我忽视了它,如果没有,我就做我的逻辑。在那之后我要阻止Ranging
[self.beaconManager stopRangingBeaconsInRegion:self.beaconRegion];然后只有Monitoring正在检查新的iBeacons。
https://stackoverflow.com/questions/28164928
复制相似问题