iOS位置 - iOS 8/9中的重要位置更改可以启动标准位置服务吗?

时间:2016-01-19 22:13:41

标签: ios iphone gps location background-service

这里有很多关于iOS位置跟踪的问题,但最近Apple已经更新了他们的大部分功能,而且很多答案都已经过时了,我的问题是专门针对iOS 8和9。

我有兴趣创建一个位置跟踪应用程序,即使应用程序关闭也能准确跟踪用户。要做到这一点,苹果声明:

  

如果您让重要更改位置服务正在运行并且您正在运行   iOS应用程序随后被暂停或终止,该服务   新位置数据到达时自动唤醒您的应用。在   唤醒时间,应用程序被放入后台,你得到一个   少量时间(约10秒)手动重启位置   服务和处理位置数据。

所以我的理解是,如果你有所有necesarry权限和plist键存在,操作系统将唤醒你的应用程序,让你做10秒钟的事情,或者如果它需要更多的时间,它可以:

  

如果iOS应用需要更多时间来处理位置数据,它可以   请求使用更多后台执行时间   beginBackgroundTaskWithName:expirationHandler:方法   UIApplication类。

现在,这说明如果我的应用程序需要更多时间来处理位置数据,它可能会启动后台任务(使用expirationHandler)来处理它。在阅读有关后台任务时,我读到后台任务可以运行最多10分钟

所以我的整体问题是,当我的应用程序在发生重要位置更改时被唤醒时,是否可以启动标准位置服务并且让它无限期地在后台运行?是否可以在第一个任务到期之前启动另一个后台任务?

修改Apple Documentation开始说:

  

因为它至少每15分钟唤醒一次系统和你的应用,   即使没有发生位置变化,它也会持续运行   直到你停止它

所以我的想法是,如果用户从零开始手机并且从未打开应用程序,在最多15分钟后(即使他们静止不动),操作系统将启动我的应用程序,在这种情况下我可以启动后台进程,我可以启动GPS跟踪,从而获得准确的GPS位置。这个逻辑是否适用于操作系统?

1 个答案:

答案 0 :(得分:3)

主要问题是无法使用重要的位置更改 "准确跟踪"用户。
重要意味着1000米,因为它是基于蜂窝塔的,而不是基于GPS的。 因此,当用户进入下一个GSM小区时,您的应用程序就会醒来 这对于精确跟踪来说不够精确。

最后,这意味着您无法在应用关闭时跟踪acuratley,这仅适用于正在运行的应用或后台运行。

  

"在阅读有关后台任务时,我读到后台任务可以   最多运行10分钟"

不,那不是真的。我的应用程序在后台运行并记录GPS位置,直到电池耗尽(8h +)。 (它不使用重要的位置模式)