快速计时器在背景中

时间:2018-04-26 06:54:17

标签: ios swift timer background

我通过地理围栏的触发器在iOS中创建后台任务。在这个背景下,我启动一个计时器来计算超时此任务的时间。但是,此计时器工作不正常,可能会在10秒后暂停,并在我将应用程序转到前台时恢复。

我需要帮助才能让这个计时器在10分钟内正常工作。 这是我的代码

@objc func timeoutChecking(_ timer: Timer) {
    print("time \(self.currentTime)")
    if self.currentTime != TIME_SEARCH {
        self.currentTime += 1
    }
    else {
        // Time out
        self.stopChecking()
    }
}

1 个答案:

答案 0 :(得分:1)

几秒钟后苹果可能会丢弃计时器,无法在后台连续运行计时器。

你可以做一件事,在applicationDidEnterBackground中取一个全局变量add set current time,然后applicationWillEnterForeground检查这个方法,取当前系统时间并存储前一次比较两次,得到一个区别他们和检查是,

if self.currentTime != TIME_SEARCH {
        self.currentTime += 1
    }
    else {
        // Time out
        self.stopChecking()
}

您必须在此处查看if self.currentTime > TIME_SEARCHif self.currentTime < TIME_SEARCH,以便获得完美的结果。 :)