ios9的后台计时器

时间:2017-01-08 09:13:27

标签: ios background swift3

我的应用程序中有后台进程。这是代码:

@available(iOS 10.0, *)
func startTimer() {
    timer2?.invalidate()
    timer2 = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { (t) in
        if UIApplication.shared.applicationState == .background {
            NSLog("tic background \(UIApplication.shared.backgroundTimeRemaining)")

            if UIApplication.shared.backgroundTimeRemaining < 10 {

            }

        }

    })
    timer2?.fire()
}

但是,它仅适用于iOS10。有没有办法重写以前版本的iOS?

1 个答案:

答案 0 :(得分:2)

在ios9或更低版本上没有基于块的计时器API。

使用方法作为回调而不是块或使用第三方解决方案,例如BlocksKit(有数百个)

我选择了一种方法:

func startTimer() {
    timer2?.invalidate()
    timer2 = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(ViewController.timerFired(_:)), userInfo: nil, repeats: true)
    timer2?.fire()
}

@objc
func timerFired(_ timer: Timer) {
    NSLog("tic")

    if UIApplication.shared.applicationState == .background {
        NSLog("tic background \(UIApplication.shared.backgroundTimeRemaining)")

        if UIApplication.shared.backgroundTimeRemaining < 10 {

        }

    }
}