ios - 在 iOS 应用程序中使用 iBeacons 时出现电池耗尽问题

标签 ios objective-c cllocationmanager ibeacon

我正在使用 iBeacon 技术(使用 estimote sdk 2.3.2)开发一个 iOS7+ 应用程序。现在,当应用程序在前台和后台运行时,我面临设备电池耗尽问题。 是否有任何选项可以在不使用 CLLocationManager 的情况下对 iBeacons 进行测距?

最佳答案

iBeacons 范围的唯一方法是使用 CoreLocation,不幸的是它非常耗电。

但是,您可以仅在需要时打开RangingMonitoring 消耗的能量少得多,如果你在 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/

相关文章:

ios - Swift 数值和 CGFloat(CGPoint、CGRect 等)

objective-c - NSTextBlock背景颜色未绘制

iphone - 在 navigationController 上前后滑动

ios - 如何在 ios 中停止多次调用 didUpdateLocations() 方法

ios - iOS后台限制是否允许http?

android - 室内 GPS 演示

ios - 混淆xcode?带有建议格式修复的警告,然后下一次编译要将其切换回来吗?

iOS:ShareKit >> Twitter 设置 >> 回调 URL --- 它是什么?

ios - 从 Swift 函数中的异步调用返回数据

ios - `-fembed-bitcode` 尝试存档应用程序时出错