ios - 后台的 Swift 定时器

标签 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()
    }
}

最佳答案

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

你可以做一件事,将一个全局变量添加到 applicationDidEnterBackground 中设置当前时间, 和 applicationWillEnterForeground在此方法中检查获取当前系统时间和存储的先前时间比较两个时间并获得它们之间的差异并检查是,

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

你必须在这里检查 if self.currentTime > TIME_SEARCHif self.currentTime < TIME_SEARCH所以你可以获得完美的结果。 :)

关于ios - 后台的 Swift 定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50036600/

相关文章:

ios - touchesBegan 未在 PDFView 中触发

ios - 根据行高在 UITableViewCell 中移动 UIImage

java - 如何在Java中添加循环定时器?

javascript - 如何将秒转换为分秒?

java - 如何在服务器范围内设置计时器

ios - Unity3D中如何组织资源的加载和卸载?

ios - 单击按钮弹出 UIPickerView (Swift)

iOS Firebase 数据库网址

Swift 5 调用 squareRoot()

swift - 我如何编写一个函数,它接受泛型类型参数,但根据泛型对象的类型返回不同的类型?