我通过地理围栏的触发器在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()
}
}
答案 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_SEARCH
或if self.currentTime < TIME_SEARCH
,以便获得完美的结果。 :)