查看苹果iOS应用程序编程指南中的Background Execution部分。
UIApplication
提供了一个界面来开始和结束后台任务UIBackgroundTaskIdentifier
。
在你AppDelegate
的顶层,创建一个类级别的任务标识符:
var backgroundTask = UIBackgroundTaskInvalid
现在,创建要完成操作你的任务,并实现您的任务没有错误的情况下完成之前它已过期:
backgroundTask = application.beginBackgroundTaskWithName("MyBackgroundTask") {
// This expirationHandler is called when your task expired
// Cleanup the task here, remove objects from memory, etc
application.endBackgroundTask(self.backgroundTask)
self.backgroundTask = UIBackgroundTaskInvalid
}
// Implement the operation of your task as background task
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
// Begin your upload and clean up JSON
// NSURLSession, AlamoFire, etc
// On completion, end your task
application.endBackgroundTask(self.backgroundTask)
self.backgroundTask = UIBackgroundTaskInvalid
}
来源
2016-09-15 14:18:35
JAL
您是否为您的要求找到了一些解决方案?谢谢! – jcasadellaoller
如何/为什么它会独立于您的应用程序? – Wain
如果您正在寻找守护进程/服务,那么您运气不佳,iOS不支持无限期运行的自定义应用程序。 – Cristik