我有并且问我想定期收集GPS数据,比如每5分钟一次。当应用程序运行时,我可以做到这一点没问题。但是我想知道是否有一种标准的方法可以使用iPhone的“多任务处理”。我可以使用持续更新模型和重大更改使用后台进程收集数据,但这些数据要么过于耗电,要么不准确。
我正在查看NSLocalNotification,但是我不确定在定期检查位置时将应用程序保持在后台状态,我认为这只能启动应用程序。
提前感谢。
答案 0 :(得分:1)
无法定期执行GPS采集(例如每5分钟)。
来自Apple文档:
节省电池电量的技巧
使用基于iOS的设备的无线电接收和传输数据需要比设备上的任何其他操作更多的功率。由于Core Location依赖于这些无线电来确定用户的位置,因此您应该在应用程序中明智地使用位置服务。大多数应用程序不需要一直运行位置服务,因此关闭这些服务是节省电力的最简单方法。
- 不使用时关闭位置服务。这看似显而易见,但值得重复。除了提供逐向导航的导航应用程序之外,大多数应用程序不需要始终使用位置服务。转动位置服务的时间足够长,以获得位置修复,然后关闭它们。除非用户在移动的车辆中,否则当前位置不应经常变化到足以成为问题。如果需要,您随时可以再次启动位置服务。
- 尽可能使用重要更改位置服务而非标准位置服务。重要更改位置服务可显着节省电力,同时仍允许您保持位置服务正常运行。强烈建议用于需要跟踪用户位置变化但不需要标准位置服务提供的更高精度的应用程序。
- 使用较低分辨率的值来获得所需的精度,除非这样做会影响您的应用。要求比您需要的更高的精度会导致核心位置启动额外的硬件并浪费功率以确保您不会使用。除非您的应用程序确实需要知道用户在几米内的位置,否则不要将值kCLLocationAccuracyBest或kCLLocationAccuracyNearestTenMeters放在desiredAccuracy属性中。请记住,指定kCLLocationAccuracyThreeKilometers的值不会阻止位置服务返回更好的数据。大多数情况下,核心位置可以使用Wi-FI和蜂窝信号返回精确度在一百米左右的位置数据。
- 如果准确性在一段时间内没有改善,请关闭位置事件。如果您的应用程序未接收到具有所需准确度的事件,您应该查看您执行的事件的准确性随着时间的推移,接收并查看它是否正在改善或保持不变。如果精度没有提高,可能是因为目前根本无法获得所需的精度。关闭位置服务并稍后再次尝试可以防止您的应用程序浪费电力。