pausesLocationUpdates会自动影响iBeacon检测多少?

时间:2016-07-27 08:58:02

标签: ios performance cllocationmanager ibeacon region-monitoring

使用Apple的 iBeacons ,这里有一些代码用于初始化CLLocationManager并开始监控信标区域:

    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.pausesLocationUpdatesAutomatically = false;
    self.locationManager.allowsBackgroundLocationUpdates = true;
    self.locationManager.delegate = self;

pausesLocationUpdatesAutomatically 在区域监控中发挥了多大作用?

官方文件说:

  

一个布尔值,指示位置管理器对象是否可以   暂停位置更新。

然而,“Getting Started with iBeacons”官方指南没有提到这一点。此外,它最后更新于2014年,我还没有找到更多。

  • 这对电池寿命有何影响?
  • 这对iBeacon区域检测有何影响?

2 个答案:

答案 0 :(得分:1)

位置更新和信标检测无关。

iBeacon检测使用蓝牙芯片组,但没有为您提供这样的位置。它只是告诉您已输入(或退出)CLBeaconRegion

CLCircularRegion检测不同;这依赖于确定用户的经纬度;通过GPS或WiFi。 GPS对电池寿命有重大影响。

因此,简短的回答是pausesLocationUpdatesAutomatically不应对信标检测产生任何影响。

答案 1 :(得分:0)

如果您在文档中查看pausesLocationUpdatesAutomatically的完整说明,则会看到解释:

  

允许位置管理器暂停更新可以改善电池电量   在不牺牲位置数据的情况下在目标设备上生存。当这个   property设置为YES,位置管理器暂停更新(和   在位置数据时有时关闭适当的硬件   不太可能改变。例如,如果用户停下来吃饭的话   使用导航应用程序,位置管理器可能暂停a的更新   一段的时间。您可以帮助确定何时暂停   通过为activityType属性赋值来更新位置。

对于activityType

  

位置管理器使用此属性中的信息作为提示   确定何时可以自动暂停位置更新。暂停   更新使系统有机会在情况下节省电力   用户位置不太可能发生变化的地方。例如,   如果活动类型是CLActivityTypeAutomotiveNavigation而没有   最近发生了位置变化,无线电可能会被供电   直到再次检测到移动为止。

如果您打开pausesLocationUpdatesAutomatically,它将开始监控重要的位置变化并节省电池,因为它不经常使用GPS。

在这种情况下,区域检测会在出现重大变化时发生,因此这种检查的执行频率会降低,这里棘手的部分是区域检测对您来说有多大重要 - 如果您决定节省电池将会发生重大变化检测可以进行区域检测。

我希望这会有所帮助。