在 iOS 应用程序中使用 iBeacon 时出现电池耗尽问题
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
。
我正在使用 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
。