我目前正在编写一个 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/