Ios 定期检查位置

Ios 定期检查位置,ios,cocoa-touch,gps,core-location,Ios,Cocoa Touch,Gps,Core Location,我的iOS应用程序严重依赖GPS,我尝试编写一种有助于节省电池的方法,但收效甚微 我创建了一个每15秒发射一次的NSTimer。每次调用该方法时,它都会将int time增加1。如果int time达到20(5分钟),它将关闭位置更新并将bool设置为true。每次该方法运行且int-time大于20时,它都会将另一个int,int-time2增加1。如果运行该方法且int time2等于4,它将再次启动位置更新并将time2设置为0 然后在位置管理器的didUpdateLocation:方法中

我的iOS应用程序严重依赖GPS,我尝试编写一种有助于节省电池的方法,但收效甚微

我创建了一个每15秒发射一次的NSTimer。每次调用该方法时,它都会将int time增加1。如果int time达到20(5分钟),它将关闭位置更新并将bool设置为true。每次该方法运行且int-time大于20时,它都会将另一个int,int-time2增加1。如果运行该方法且int time2等于4,它将再次启动位置更新并将time2设置为0

然后在位置管理器的didUpdateLocation:方法中,我有一个算法,首先检查布尔值是否为真,如果为真,则检查新位置的水平精度,并确保其低于10。然后它会用一个名为coords的location对象检查新位置,并检查它们之间的距离是否大于9米。如果没有,它将再次停止位置更新并返回。如果是,它将继续执行另一个算法,在该算法中,它将根据一些参数检查新的位置对象。如果通过,coords location对象将与新的location对象一起设置,time和time2 ints将设置为0,isStopped将设置为false,整个过程将重新开始

简言之,在5分钟无位置更改后,位置更新将停止,并每1分钟定期检查一次,以查看用户是否已从满足所有要求的前一位置移动至少10米。当用户移动足够远时,它会再次启动整个过程,并且用户在开始定期检查之前,必须在5分钟内不移动10米或更多米。这背后的想法是,当用户移动不多时,每分钟只进行几秒钟的检查,而不是让定位服务持续运行

现在,当位置更新停止时,我遇到了一个问题。应用程序处于后台时,NSTimer停止运行


我可以安排一个后台任务在1分钟检查之间运行循环吗?有谁有更好的主意吗?或者对此有什么想法?

不久前,我问了一个问题,这个问题的特点是可以在后台运行GPS的所有不同方式

为了在后台维护GPS,您必须执行特定的操作。一个NSTimer是不够的,因为你需要注册你的应用程序才能让它在10分钟后在后台运行。你只需在后台每10分钟运行一次GPS,就能让你的应用程序正常运行

无论如何,上面帖子中的方法应该能回答你的问题