iOS上的CoreLocation只监控后台位置变化一段时间?

时间:2012-03-05 22:00:08

标签: objective-c ios

我目前正在编写一款iOS应用,需要在后台监控用户的位置约30分钟。为此,我正在使用CoreLocation API提供的重要更改位置服务,并调用startSignificantChangeUpdate,并实施locationManager:didUpdateToLocation:fromLocation:

问题是30分钟后,我想关闭重大变更位置服务,似乎无法找到办法。我在locationManager:didUpdateToLocation:fromLocation:中有一些代码,用于检查位置是否已发布超过30分钟,如果已发布,则将其关闭。问题是如果用户相对不动并且应用程序在后台,则位置服务将在30分钟后不会被关闭,例如如果用户已经到家并且睡着了,那么直到早上才会再次打开应用程序。

我尝试过使用NSTimer类,但是一旦将应用程序放入后台,这似乎就会停止运行。

我已经在应用程序变为活动状态时进行了30分钟的检查,但是如果用户长时间没有打开应用程序,则位置服务可以整晚运行。

除此之外我还没有关于如何停止服务的想法?

由于

1 个答案:

答案 0 :(得分:1)

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