即使应用程序处于后台或锁定模式直到完成,如何执行任务

时间:2017-12-21 07:36:17

标签: ios swift uiapplication performselector

下面的代码我曾经习惯在后台模式下写某个任务。但是这个任务在结束任务后只执行了3分钟。所以我想执行特定任务直到完成。

func registerBackgroundTask() {
    backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
        self?.endBackgroundTask()   
    }
    assert(backgroundTask != UIBackgroundTaskInvalid)
}

func endBackgroundTask() {
    print("Background task ended.")
    AppConstants.sharedInstance.scheduleLocalNotification(message: "Background task ended.", title: "status!")
    UIApplication.shared.endBackgroundTask(backgroundTask)
    backgroundTask = UIBackgroundTaskInvalid
}

self.registerBackgroundTask()
self.perform(#selector(self.backgroundTimer(challengeId:)), with: "\(tag)", afterDelay:600)

1 个答案:

答案 0 :(得分:0)

如此doc中所示,只允许预先定义(由Apple)任务(在doc的表3-1中)无限期运行。在完成任务之前,您无法执行任务。但是如果你的目标是jail破坏设备,你可以通过编写守护进程来实现。这似乎不是你的情况。所以,你没有运气。