使用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年,我还没有找到更多。
答案 0 :(得分:1)
位置更新和信标检测无关。
iBeacon检测使用蓝牙芯片组,但没有为您提供这样的位置。它只是告诉您已输入(或退出)CLBeaconRegion
。
CLCircularRegion
检测不同;这依赖于确定用户的经纬度;通过GPS或WiFi。 GPS对电池寿命有重大影响。
因此,简短的回答是pausesLocationUpdatesAutomatically
不应对信标检测产生任何影响。
答案 1 :(得分:0)
如果您在文档中查看pausesLocationUpdatesAutomatically
的完整说明,则会看到解释:
允许位置管理器暂停更新可以改善电池电量 在不牺牲位置数据的情况下在目标设备上生存。当这个 property设置为YES,位置管理器暂停更新(和 在位置数据时有时关闭适当的硬件 不太可能改变。例如,如果用户停下来吃饭的话 使用导航应用程序,位置管理器可能暂停a的更新 一段的时间。您可以帮助确定何时暂停 通过为activityType属性赋值来更新位置。
对于activityType
:
位置管理器使用此属性中的信息作为提示 确定何时可以自动暂停位置更新。暂停 更新使系统有机会在情况下节省电力 用户位置不太可能发生变化的地方。例如, 如果活动类型是CLActivityTypeAutomotiveNavigation而没有 最近发生了位置变化,无线电可能会被供电 直到再次检测到移动为止。
如果您打开pausesLocationUpdatesAutomatically
,它将开始监控重要的位置变化并节省电池,因为它不经常使用GPS。
在这种情况下,区域检测会在出现重大变化时发生,因此这种检查的执行频率会降低,这里棘手的部分是区域检测对您来说有多大重要 - 如果您决定节省电池将会发生重大变化检测可以进行区域检测。
我希望这会有所帮助。