我通过地理围栏触发在 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()
}
}
最佳答案
苹果可能会丢弃计时器几秒钟后,无法在后台连续运行计时器。
你可以做一件事,将一个全局变量添加到 applicationDidEnterBackground
中设置当前时间, 和 applicationWillEnterForeground
在此方法中检查获取当前系统时间和存储的先前时间比较两个时间并获得它们之间的差异并检查是,
if self.currentTime != TIME_SEARCH {
self.currentTime += 1
}
else {
// Time out
self.stopChecking()
}
你必须在这里检查 if self.currentTime > TIME_SEARCH
或 if self.currentTime < TIME_SEARCH
所以你可以获得完美的结果。 :)
关于ios - 后台的 Swift 定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50036600/