【问题标题】:How much does pausesLocationUpdatesAutomatically affect iBeacon detection?pausesLocationUpdatesAutomatically 对 iBeacon 检测的影响有多大?
【发布时间】:2016-12-01 04:33:55
【问题描述】:

在 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 区域检测有何影响?

【问题讨论】:

标签: ios performance cllocationmanager ibeacon region-monitoring


【解决方案1】:

位置更新和信标检测不相关。

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

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

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

【讨论】:

    【解决方案2】:

    如果您查看文档中pausesLocationUpdatesAutomatically 的完整描述,您会看到解释:

    允许位置管理器暂停更新可以提高电池电量 在不牺牲位置数据的情况下在目标设备上的寿命。当这 属性设置为 YES,位置管理器会暂停更新(并且 有时会关闭适当的硬件)位置数据 不太可能改变。例如,如果用户停下来吃东西,而 使用导航应用程序,位置管理器可能会暂停更新 一段的时间。您可以帮助确定何时暂停 通过为 activityType 属性赋值来更新位置。

    对于activityType

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

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

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

    我希望这会有所帮助。

    【讨论】:

    • 您好,感谢您的回复。如果我正在设计一个应用程序以使用 动态打开和关闭的 iBeacons,那么最好将此标志保留为 false。在这种情况下,我假设它会在用户不移动的情况下检测失败如果我将其设置为 false 并且用户没有移动怎么办​​。如果空闲,我应该期望它检测到新激活的信标吗?当我在测试中将其保留为 false 时,当设备在信标发射硬件旁边空闲时,它似乎有很长的延迟(60 分钟以上,并且仅在用户解锁屏幕时)。
    • PS:根据我以前的知识,大多数人似乎都说有 15 分钟的“宽限时间”,当设备不移动(变得更长)时,这似乎并不适用。
    • 文档指出,即使没有发生位置更改,重大更改也应至少每 15 分钟唤醒一次系统和您的应用程序 - developer.apple.com/library/ios/documentation/UserExperience/…
    • 是的。但是什么被归类为重大变化?是否存在信标或位置?根据我的观察,当应用程序未运行时,仅信标的存在似乎并不总是足以获得 15 分钟的反应时间。
    • 你在项目plist中开启了后台模式吗?
    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2018-01-06
    相关资源
    最近更新 更多