2011-04-10 139 views
2

我正试图在Apple的重要位置更改服务和定期启动/停止位置管理器之间做出决定。这就是苹果对此所说的:背景位置跟踪:iOS

收集位置数据是一个耗电量较高的操作。它包括启动机载无线电和查询可用的蜂窝塔,Wi-Fi热点或GPS卫星,这可能需要几秒钟的时间。让标准位置服务长时间运行可能会耗尽设备的电池。 (重大更改位置服务通过仅监视手机信号塔变化而大幅降低电池消耗,但该服务仅适用于手机无线电的设备。)对于大多数应用程序,通常只需建立初始位置修复并仅获取更新即可定期在那之后。如果您确定需要定期更新位置,则应尽可能使用重大更改位置服务;否则,您应该以最小化其对电池寿命的影响的方式配置标准位置服务的参数。

所以,我的用例是能够提醒用户,如果他们在某个位置附近(〜1公里)。我应该跳过重大的位置更新并每隔10分钟左右轮询一次位置管理器吗?

谢谢,
Teja。

回答

1

考虑使用区域监视API。这是在支持iOS 4多任务时,完成所锁定内容的唯一方法。不过要注意的是,这有点令人生气,特别是如果你想监控很多地区的话。

如果您只想知道用户何时靠近特定位置,我将避免使用重要的位置更改API。

+0

目前,我正在尝试开发类似于@Tejaswi正在做的事情,但我的情况有点不同。我需要制作一个应用程序,以便在用户靠近机场中的物体时提醒用户。我已经测试并澄清,区域监控的问题在于,当您已经在区域中时,您不会收到didEnterRegion呼叫。我的意思是它只适用于进入/退出事件。 – Centurion 2011-10-14 13:19:51

+0

因此,就我而言,用户可能来自飞行模式为ON的航班,并且该应用可能处于暂停模式。这意味着所有监控都会停止(尽管检查regionMonitoringEnabled和locationServicesEnabled返回YES)。现在,令我感到不安的是,当用户在已经在区域内时禁用飞行模式时,您不会获取位置改变事件,因为飞机模式仅在进入/退出事件中冻结所有位置和区域监视工作。这意味着你将永远不会收到关于在区域内的通知,并且这对于区域监控来说似乎非常成问题:( – Centurion 2011-10-14 13:29:45