小编典典

如何在我的 iOS 应用程序中每 n 分钟更新一次后台位置?

all

我正在寻找一种在我的 iOS 应用程序中每 n 分钟更新一次后台位置的方法。我正在使用 iOS 4.3,该解决方案应该适用于未越狱的 iPhone。

我尝试/考虑了以下选项:

  • CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges:根据配置的属性,这在后台按预期工作,但似乎不可能强制它每 n 分钟更新一次位置
  • NSTimer:当应用程序在前台运行但似乎不是为后台任务设计时可以工作
  • 本地通知:可以每 n 分钟安排一次本地通知,但无法执行某些代码来获取当前位置(无需用户通过通知启动应用程序)。这种方法似乎也不是一种干净的方法,因为这不是应该使用通知的方式。
  • UIApplication:beginBackgroundTaskWithExpirationHandler:据我了解,这应该用于在将应用程序移至后台时在后台完成一些工作(也有时间限制),而不是实现“长时间运行”的后台进程。

如何实施这些定期后台位置更新?


阅读 56

收藏
2022-06-24

共1个答案

小编典典

我在 Apple Developer Forums 的帮助下找到了实现此功能的解决方案:

  • 指定location background mode
  • NSTimer在后台创建一个UIApplication:beginBackgroundTaskWithExpirationHandler:
  • 什么* 时候n小于它会工作得很好。当较大 ,应该在没有剩余时间之前再次启用(和禁用)以避免后台任务被杀死。 UIApplication:backgroundTimeRemaining``n ***location manager

这是可行的,因为 location 是三种允许的后台执行类型之一

注意:我在不起作用的模拟器中测试它浪费了一些时间。 但是,它在我的手机上运行良好。

2022-06-24