【发布时间】:2016-04-25 14:02:53
【问题描述】:
这里有很多关于 iOS 位置跟踪的问题,但最近 Apple 更新了它们的大部分功能,所以很多答案已经过时,我的问题专门针对 iOS 8 和 9。
我有兴趣创建一个位置跟踪应用程序,即使在应用程序关闭时也能准确跟踪用户。为此,苹果表示:
如果您让重大变化的定位服务继续运行并且您的 iOS 应用程序随后被暂停或终止,服务 当新的位置数据到达时自动唤醒您的应用。在 唤醒时间,应用程序进入后台,你会得到一个 手动重启定位的少量时间(大约 10 秒) 服务并处理位置数据。
所以我的理解是,如果您拥有所有必要的权限和 plist 密钥,操作系统将唤醒您的应用并允许您在 10 秒内执行某项操作,或者如果需要更多时间,它可以:
如果 iOS 应用需要更多时间来处理位置数据,它可以 使用 beginBackgroundTaskWithName:expirationHandler: 方法 UIApplication 类。
现在,这表示如果我的应用程序需要更多时间来处理位置数据,它可能会启动一个后台任务(使用 expireHandler)来处理它。在阅读有关后台任务的信息时,我了解到后台任务最多可以运行 10 分钟
所以我的总体问题是,当我的应用在发生重大位置更改时被唤醒时,是否可以启动标准位置服务和它是否无限期地在后台运行?是否可以在第一个后台任务到期之前启动另一个后台任务?
编辑: 从Apple Documentation 它说:
因为它至少每 15 分钟唤醒一次系统和您的应用, 即使没有发生位置变化,它也会持续运行 直到你停下来
所以我的想法是,如果用户从无到有启动手机并且从不打开应用程序,最多 15 分钟后(即使他们静止不动),操作系统将启动我的应用程序,在这种情况下我可以启动一个我可以启动 GPS 跟踪的后台进程,从而获得准确的 GPS 位置。这个逻辑是否适用于操作系统?
【问题讨论】:
-
你自己找到答案了吗?我有同样的问题了解是否可以这样做......
-
简单的答案是肯定的,这可以按照我的想象来完成。基本上,只要您的应用程序启动(可以从 AppDelegate 完成),您将启用显着位置更改和标准位置,如果用户终止应用程序,如果发生显着位置更改(大约 500 米左右),它将启动并且也开始标准跟踪。
标签: ios iphone gps location background-service