objective-c - iOS 上的 CoreLocation 仅在一定时间内监视后台的位置变化?

标签 objective-c ios

我目前正在编写一个 iOS 应用程序,它需要在后台监视用户的位置大约 30 分钟。为此,我使用了 CoreLocation API 提供的Significant Change Location Service,并调用了 startSignificantChangeUpdate 并实现了 locationManager:didUpdateToLocation:fromLocation:

问题是在 30 分钟后,我想关闭 Significant Change Location Service 但似乎无法找到这样做的方法。我在 locationManager:didUpdateToLocation:fromLocation: 中有一些代码,用于检查该位置是否已发布超过 30 分钟,如果已发布,则将其关闭。问题是如果用户相对不动并且应用程序在后台,则位置服务不会在 30 分钟后关闭,例如如果用户已经到家并睡着了,因此直到早上才会再次打开应用程序。

我试过使用 NSTimer 类,但是一旦应用程序进入后台,它似乎就停止运行了。

虽然我已经在应用程序激活时进行了 30 分钟的检查,但话又说回来,如果用户长时间不打开应用程序,定位服务可能会整夜运行。

除此之外,我不知道如何停止服务?

谢谢

最佳答案

没有真正好的方法来为后台服务运行计时器。好消息是最后一个位置包含一个时间戳,您可以将上次更新与之进行比较。这可能不是大致时间,但您应该能够在 30 分钟后的最后一次更新后禁用定位服务。

关于objective-c - iOS 上的 CoreLocation 仅在一定时间内监视后台的位置变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574693/

相关文章:

html - 如何在 iOS 上将数据转换为 CSV 或 HTML 格式?

ios - 如何创建左侧占位符和右侧编辑文本的 UITextField?

ios - UITableViewCell 内的 UITextField : becomeFirstResponder in didSelectRowAtIndexPath

android - 是否可以将 Android 数据库用于 iphone 应用程序?

ios - Xcode 中 iOS 的标准图像按钮图标

ios - 在 Today Extension 上访问用户的位置

ios - 使用 iOS 10.2 版在同一设备上获取不同的 UUID

ios - XCode 7.3 Storyboard不断显示加载修订

ios - 调用 setViewControllers :animated: 后方向更改崩溃

objective-c - 使用蒙版比较图像