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

标签 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)

最佳答案

如本文 doc 中所示,只有预定义的(Apple)任务(在 doc 的表 3-1 中)才允许无限期运行。在任务完成之前,您无法执行任务。但如果您的目标是越狱设备,则可以通过编写守护程序来实现。这对你来说似乎并非如此。所以,你没有运气。

关于ios - 即使应用程序处于后台或锁定模式,如何执行任务直到完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47920054/

相关文章:

IOS8获取指纹数据

objective-c - UILocalNotification 添加和删除

ios - 无法转换为预期参数类型“AuthDataResultCallback?”

ios - 在 ios 中使用 swift 删除文件

ios - 删除核心数据中的对象,无法匹配 Swift 数组元素类型

ios - 在数组中连接不同的 AudioKit Effects

ios - 如何将自动缩小应用于 UIButton 标题?

ios - keyWindow = nil 仅在 iPad 上

iphone - 从 app1 启动 app2 并传递数据

ios - 异步调用后 UITableViewCell 自动行高不起作用