这里有很多关于iOS位置跟踪的问题,但最近Apple已经更新了他们的大部分功能,而且很多答案都已经过时了,我的问题是专门针对iOS 8和9。
我有兴趣创建一个位置跟踪应用程序,即使应用程序关闭也能准确跟踪用户。要做到这一点,苹果声明:
如果您让重要更改位置服务正在运行并且您正在运行 iOS应用程序随后被暂停或终止,该服务 新位置数据到达时自动唤醒您的应用。在 唤醒时间,应用程序被放入后台,你得到一个 少量时间(约10秒)手动重启位置 服务和处理位置数据。
所以我的理解是,如果你有所有necesarry权限和plist键存在,操作系统将唤醒你的应用程序,让你做10秒钟的事情,或者如果它需要更多的时间,它可以:
如果iOS应用需要更多时间来处理位置数据,它可以 请求使用更多后台执行时间 beginBackgroundTaskWithName:expirationHandler:方法 UIApplication类。
现在,这说明如果我的应用程序需要更多时间来处理位置数据,它可能会启动后台任务(使用expirationHandler)来处理它。在阅读有关后台任务时,我读到后台任务可以运行最多10分钟
所以我的整体问题是,当我的应用程序在发生重要位置更改时被唤醒时,是否可以启动标准位置服务并且让它无限期地在后台运行?是否可以在第一个任务到期之前启动另一个后台任务?
修改 从Apple Documentation开始说:
因为它至少每15分钟唤醒一次系统和你的应用, 即使没有发生位置变化,它也会持续运行 直到你停止它
所以我的想法是,如果用户从零开始手机并且从未打开应用程序,在最多15分钟后(即使他们静止不动),操作系统将启动我的应用程序,在这种情况下我可以启动后台进程,我可以启动GPS跟踪,从而获得准确的GPS位置。这个逻辑是否适用于操作系统?
答案 0 :(得分:3)
主要问题是无法使用重要的位置更改
"准确跟踪"用户。
重要意味着1000米,因为它是基于蜂窝塔的,而不是基于GPS的。
因此,当用户进入下一个GSM小区时,您的应用程序就会醒来
这对于精确跟踪来说不够精确。
最后,这意味着您无法在应用关闭时跟踪acuratley,这仅适用于正在运行的应用或后台运行。
"在阅读有关后台任务时,我读到后台任务可以 最多运行10分钟"
不,那不是真的。我的应用程序在后台运行并记录GPS位置,直到电池耗尽(8h +)。 (它不使用重要的位置模式)