我正在使用iBeacon
技术开发iOS7 +应用程序(使用estimote sdk 2.3.2)。现在,当应用程序在前台和后台运行时,我面临设备耗电的问题。
是否可以选择不使用iBeacons
范围CLLocationManager
?
最佳答案
范围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
。