我正在使用 iBeacon
技术(使用 estimote sdk 2.3.2)开发一个 iOS7+ 应用程序。现在,当应用程序在前台和后台运行时,我面临设备电池耗尽问题。
是否有任何选项可以在不使用 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
。
关于ios - 在 iOS 应用程序中使用 iBeacons 时出现电池耗尽问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28164928/