将在后台模式closures我的应用程序后下载简历

我想到了可以在后台应用程序模式下载。 我已经在XCode中实现了背景获取模式,并注册了后台任务,工作正常。

我可以在用户closures我的应用程序后强制下载任务吗? 怎么样?

不,当你的应用程序被用户终止时,你不能继续下载! 你的应用程序必须要求保持在后台状态! 因为如果用户强行closures应用程序,意味着他不想再运行它。 如果您的应用程序被系统暂停,那么它可以被唤醒,但不会被用户终止!

如果iOS应用程序被系统终止并重新启动,则应用程序可以使用相同的标识符来创build新的configuration对象和会话,并检索终止时正在进行的传输状态。 此行为仅适用于系统正常终止应用程序。 如果用户从多任务屏幕终止应用程序,则系统取消所有会话的后台传输。 另外,系统不会自动重新启动用户强制退出的应用程序。 用户必须明确重新启动应用程序才能再次开始传输。

更新:(如评论中所述)

请参阅苹果文档 ,它指出,

这种方法可以让你的应用程序知道它即将被终止,并完全从内存中清除。 您应该使用此方法为您的应用程序执行任何最终的清理任务,例如释放共享资源,保存用户数据以及使计时器无效。 你的这个方法的实现有大约五秒钟来执行任何任务并返回。 如果该方法在时间到期之前没有返回,那么系统可能完全终止该进程。

对于不支持后台执行的应用程序或与iOS 3.x或更低版本链接的应用程序,当用户退出应用程序时,总是调用此方法。 对于支持后台执行的应用程序,当用户退出应用程序时,通常不会调用此方法,因为在此情况下应用程序只是移动到后台。 但是,这种方法可能会在应用程序在后台运行(未挂起),系统因某种原因需要终止的情况下调用。

在调用此方法之后,应用程序还会发布UIApplicationWillTerminate通知,以便感兴趣的对象有机会对转换作出响应。

当任何任务完成时, NSURLSession对象调用委托的URLSession:task:didCompleteWithError:方法,使用error对象或nil(如果任务成功完成)。 如果任务失败,则大多数应用程序应重试请求,直到用户取消下载或服务器返回错误,指示请求永远不会成功。 但是,您的应用程序不应该立即重试。 相反,它应该使用可达性API来确定服务器是否可访问,并且只有在接收到可访问性已更改的通知时才应发出新的请求。

如果可以恢复下载任务,则NSError对象的userInfo字典包含NSURLSessionDownloadTaskResumeData键的值。 您的应用程序应该传递此值以调用downloadTaskWithResumeData:downloadTaskWithResumeData:completionHandler:创build一个新的下载任务,以继续现有的下载。

如果任务无法恢复,您的应用程序应该创build一个新的下载任务并从头开始重新启动事务。

这里结帐: URL会话的生命周期