gpt4 book ai didi

ios - 如何在应用程序强制退出和应用程序重新启动后恢复 NSURLSession 下载过程?

转载 作者:IT王子 更新时间:2023-10-29 05:17:06 26 4
gpt4 key购买 nike

我已经实现了 NSURLSession 来从我们的服务器下载相当大的文件。现在,只要我在前台或后台工作并返回应用程序,交易就会正常进行并完成。

但如果我使用多任务屏幕强制退出应用程序并再次重新打开应用程序。下载过程没有完成,尽管我从文档中了解到,它应该是这样的,这里是文档的状态:

If an iOS app is terminated by the system and relaunched, the app can use the same identifier to create a new configuration object and session and retrieve the status of transfers that were in progress at the time of termination. This behavior applies only for normal termination of the app by the system. If the user terminates the app from the multitasking screen, the system cancels all of the session’s background transfers. In addition, the system does not automatically relaunch apps that were force quit by the user. The user must explicitly relaunch the app before transfers can begin again.

意思是如果我重新启动应用程序,在force-quit 之前的事务应该再次开始,或者是吗?是否需要执行其他操作才能使其正常工作?

更新:我偶然发现了这个项目: https://github.com/Heikowi/HWIFileDownload#force-quit

即:

Force Quit

After the app has been killed by the user, downloads do not continue in the background. On iOS 7 (and later) resume data is passed back.

这意味着即使应用程序在后台被用户终止,也有一种方法可以接收恢复数据。只有项目是用 Objective-C 编写的,我无法理解他们为实现这一目标做了什么。

最佳答案

强制退出后:

 NSURLSessionTaskDelegate - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

委托(delegate)方法将在应用程序重新启动时被调用。如果可以恢复下载任务,错误对象将包含恢复数据:

[error.userInfo objectForKey:NSURLSessionDownloadTaskResumeData]

使用此数据,您可以通过创建一个 NSURLSessionDownloadTask 来恢复下载过程:

(NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData*)resumeData.

更多信息可以在 Life Cycle of a URL Session with Custom Delegates 中找到。 , 第 13 步。

关于ios - 如何在应用程序强制退出和应用程序重新启动后恢复 NSURLSession 下载过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31904182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com