NSTIMER在Swift3中的锁定屏幕上的运行不超过3分钟



我正在使用冥想应用程序。在此应用程序中,我将为用户提供一个选择,以选择最多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)")
    }

预先感谢。

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

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

在此应用程序中,我可以为用户提供一个选择,以选择最多24小时的时间并进行冥想。

本地通知将是这种事情的更好工具。您可以安排通知将来发生的某个时候,操作系统将照顾将通知发送给用户。发送通知后,用户将看到您的消息,即使应用程序当前根本不运行,也可以选择切换到您的应用程序。

最新更新