在Swift3的锁屏上,NSTimer的运行时间不超过3分钟?

时间:2017-10-02 06:25:42

标签: ios swift3 nstimer

我正在制作冥想应用。在这个应用程序中,我给用户一个选项,选择最多24小时的时间,并做冥想。定时器在锁定屏幕上正常工作3分钟,但3分钟后停止。

代码在这里: -

     var backgroundTaskIdentifier: UIBackgroundTaskIdentifier?

     var timer : Timer?
     var counter : Int!

    override func viewDidLoad() {
    super.viewDidLoad()
     backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: {
        UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!)
    })
     timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(MainPlayerMindCultivationController.updateTimer), userInfo: nil, repeats: true)

    }

 func updateTimer () {
    counter = counter - 1
    let hours = Int(counter) / 3600
    let minutes = Int(counter) / 60 % 60
    let seconds = Int(counter) % 60

    timerLabel.fadeTransition(0.4)
    timerLabel.text = String(format: "%02i:%02i:%02i",hours,minutes,seconds)

    print("mincounter\(counter)")

    }

先谢谢。

1 个答案:

答案 0 :(得分:2)

  

计时器在锁定屏幕上工作正常3分钟,但3分钟后停止。

这就是iOS的工作方式。当应用程序中断时,您应该使自己的计时器无效,然后在应用程序再次开始运行时重新启动它们。但是,如果您没有自行停止,那么当应用程序暂停时,操作系统将使您的运行计时器失效。

  

在这个应用程序中,我给用户一个选项,选择最多24小时的时间并进行冥想。

本地通知对于这种事情来说是一个更好的工具。您可以安排在将来的某个时间点发生通知,操作系统将负责将通知发送给用户。发送通知后,即使应用当前没有运行,用户也会看到您的消息,并可以选择切换到您的应用。