我需要支持iBeacon技术。在我们的例子中,我想要一个连续扫描(测距)iBeacons天气我们的应用程序在前景或背景中的功能。我们知道它可能与CLLocationManager标准更新位置方法。但我们不希望采用标准的位置更新(因为我们不想冒电池消耗的风险)。有没有其他选项可以在不使用CLLocationManager的情况下开始连续测量CLBeaconRegion?
答案 0 :(得分:0)
我正在使用Estimote Beacons并且有委托方法或Estimate SDK(ESTBeaconManager类)可用“https://github.com/Estimote/iOS-SDK”,每当信标进入范围或超出范围时,下面的所述委托方法将在内部调用并帮助我们可以减少电池消耗。我们可以将接近度检查放在didEnterRegion方法中:
- (void)beaconManager:(ESTBeaconManager *)manager didEnterRegion:(ESTBeaconRegion *)region{}
- (void)beaconManager:(ESTBeaconManager *)manager didExitRegion:(ESTBeaconRegion *)region{}
- (void)beaconConnectionDidSucceeded:(ESTBeacon*)beacon{}
- (void)beaconConnectionDidFail:(ESTBeacon*)beacon withError:(NSError*)error{}
- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region{}
答案 1 :(得分:0)
你可以在iOS上检测iBeacon传输的唯一方法是使用CoreLocation,你是正确的,恒定范围会显着耗尽电池电量。
理论上,您可以使用CoreBluetooth来检测其他信标类型,如AltBeacon(读取iBeacon广告详细信息被CoreBluetooth阻止),但电池使用情况仍然相似。
在后台节省电池的标准方法是使用CoreLocation信标监控API,这对电池更容易。然后,当这些监视API检测到信标时,即使您的应用程序位于后台,也可以开始测距。
有关延长背景范围时间的详细信息,请参阅此处:http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html