Swift: 倒计时后关闭应用

Swift: Shut down app after countdown

我创建了一个 4:00 分钟倒数计时器,当它达到 0:00 时会发出声音信号。我使用了一个功能来防止 phone 在计时器为 运行 时入睡。但是,这是我的应用程序的最后一个屏幕。因此,一旦声学最终信号结束,我希望应用程序慢慢关闭。我不知道把代码放在哪里。

这是我用来防止它入睡的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    UIApplication.sharedApplication().idleTimerDisabled = true
}

所以我想我可以使用

UIApplication.sharedApplication().idleTimerDisabled = false

反转它。当我将它放在 stopTimer 函数中时,它会在 0:00 处立即关闭。

func stopTimer() {
    if count == 0 {
        timer.invalidate()
        timerRunning = false
        playSound()
        timerLabel.text = "DONE"
    }
}

也许有一种方法可以延迟该过程,使其在 15 秒后关闭。我该怎么做?

应用不应自行终止。如果您这样做,应用商店将拒绝您。计时器结束后,只需将 idleTimerDisabled 设置为 false。然后系统将根据用户的设置和当前 activity 在未来的某个时间点进入休眠状态。 (只要用户与他们的设备交互,inactivity 睡眠定时器就不会启动。)

如我的评论和 linked answer 中所述,您可以使用 dispatch_after:

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(15 * Double(NSEC_PER_SEC))) // the 15 indicates the seconds to wait
dispatch_after(delayTime, dispatch_get_main_queue()) {
    UIApplication.sharedApplication().idleTimerDisabled = false
}