【问题标题】:iOS Location - Significant Location Change in iOS 8/9 can start standard location service?iOS 位置 - iOS 8/9 中的重大位置更改可以启动标准位置服务吗?
【发布时间】: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


【解决方案1】:

主要问题是不能将重大的位置更改用于 “准确跟踪”用户。
显着意味着 1000m,因为它是基于手机信号塔的,而不是基于 GPS 的。 因此,当用户移动到下一个 GSM 单元时,您的应用就会被唤醒。
这对于准确跟踪来说不够准确。

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

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

不,那不是真的。我的应用程序在后台运行并记录 GPS 位置,直到电池耗尽(8 小时以上)。 (不使用显着定位模式)

【讨论】:

  • 感谢您的回答!如果您的应用程序关闭,它会被唤醒吗? Apple 文档还说,无论位置发生什么变化,重大位置变化也会在 15 分钟后唤醒应用程序。所以我是说,当应用程序被唤醒时,我将启动后台进程,使其无限期地运行。这可能吗?
  • 不,因为我不使用 Signif。定位服务,它没有被唤醒。
  • 此外,当用户关闭应用程序时,绝对不需要跟踪用户。唯一应该这样做的应用程序是在设备被盗的情况下,并且苹果预装了一个。
  • 我正在创建的应用程序是在工人在现场时跟踪他们,这是一个诚实的应用程序,因为他们知道它正在运行。我正在尝试创建应用程序,这样他们就不能简单地将其关闭并且不再运行,而是会自动重新打开。那么从我所见,iOS 是不可能的?
  • 不,这是不可能的。手机的所有者决定运行哪个应用程序。当应用程序关闭时,您可以向他们发送短信(假设工作人员在应用程序可以向您的服务器发送消息的区域工作。以规则间隔(活动消息)
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2015-12-30
  • 2015-01-20
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多