进入后台后5分钟内如何锁定应用

时间:2018-07-25 13:34:34

标签: ios swift

如果我的应用程序在后台运行超过5分钟,我想执行导航以锁定屏幕视图控制器。这是我的代码。但是有时它会按预期运行,有时却无法运行。怎么解决?

private var lockTimer: Timer?

func applicationDidEnterBackground(_ application: UIApplication) {
    lockTimer = Timer.scheduledTimer(withTimeInterval: 300, repeats: false) { _ in
        // Navigation code
    }
}

func applicationWillEnterForeground(_ application: UIApplication) {
    lockTimer?.invalidate()
    lockTimer = nil
}

2 个答案:

答案 0 :(得分:2)

背景任务不能保证在iOS上运行很长时间。有多种方法可以提高完成herehere详细的后台任务的机会。

您可以通过另一种方法来实现此目的:节省时间(例如,使用用户默认设置),应用进入后台,然后当应用再次打开时,您检查时间并移至锁定屏幕(如果已结束) 5分钟。

答案 1 :(得分:-1)

尝试以下方法:

func applicationDidEnterBackground(_ application: UIApplication) {
    let defaults = UserDefaults.standard
    defaults.set(Date(), forKey: "LastInactiveDate")
    defaults.synchronize()
}

func applicationWillEnterForeground(_ application: UIApplication) {
    let defaults = UserDefaults.standard
    if let lastInactiveDate = defaults.object(forKey: "LastInactiveDate") as? Date{
        let seconds = Date().timeIntervalSince(lastInactiveDate)
        print("Seconds ::" , seconds)
        if seconds >= 300{
            //Do any thing here to lock the app
        }
    }
    defaults.set(nil, forKey: "LastInactiveDate")
    defaults.synchronize()
}