【发布时间】:2015-01-27 06:59:54
【问题描述】:
我正在使用iBeacon 技术开发一个iOS7+ 应用程序(使用estimote sdk 2.3.2)。现在,当应用程序在前台和后台运行时,我面临设备电池耗尽问题。
在不使用CLLocationManager 的情况下,有任何选择iBeacons 的选项吗?
【问题讨论】:
标签: ios objective-c cllocationmanager ibeacon
我正在使用iBeacon 技术开发一个iOS7+ 应用程序(使用estimote sdk 2.3.2)。现在,当应用程序在前台和后台运行时,我面临设备电池耗尽问题。
在不使用CLLocationManager 的情况下,有任何选择iBeacons 的选项吗?
【问题讨论】:
标签: ios objective-c cllocationmanager ibeacon
范围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。
【讨论】: