![](/img/trans.png)
[英]How to restrict battery drain for an application using CLLocationManager
[英]Battery drain issue while using iBeacons in iOS application
我正在使用iBeacon
技术开发iOS7 +应用程序(使用estimote sdk 2.3.2)。 现在,当应用程序在前台和后台运行时,我面临设备耗电的问题。 是否可以选择不使用CLLocationManager
来对iBeacons
进行测距?
范围iBeacons
的唯一方法是使用CoreLocation
,不幸的是,这非常耗电。
但是,只有在需要时才可以打开Ranging
。 Monitoring
消耗的能量少得多,足以确定您是否处于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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.