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