暂停恢复上传/下载即使应用程序终止,这可能吗?

时间:2013-08-17 06:12:05

标签: php ios web-services file-upload download

我希望在以下条件下从iOS应用上传和下载服务器中的大文件。

  

1)如果我的应用程序进入后台,它应该执行上传和下载。

     

2)如果我丢失了连接,那么它应该停止任何渐进式上传和下载,然后可以从它停止的地方恢复。

     

3)如果我从托盘关闭应用程序,那么当应用程序重新启动时,它将在第二点跟随相同的步骤。

我真的想知道这可能是NSURLConnection吗?

我非常了解 ASIHttpRequest AFNetworking 库,我不想使用任何外部库而是想使用默认的NSURLConnection类同样的。

  

如果其连接是持久的并且应用程序在后台运行,我可以使用NSURLConnection下载和上传。

我在第三种情况下想到了以下想法:

  

如果应用程序将要终止,我将需要在某处存储上传或下载进度,以便下次我需要发送“范围”以继续下载。

但我不确定服务器会如何自行处理?如何为此配置服务器?如何为此配置webservice?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

iOS5以来,您可以在此类情况下请求您的申请额外一些时间。通常大约需要10分钟,但可以根据操作系统的需要进行更改。为了在你的appDelegate willResignActive中实现这个:

UIBackgroundTaskIdentifier backGroundTask = 0;
backGroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
    //time span give expired and the download is not finished
}];


//once the download is finished inside the time span given
[[UIApplication sharedApplication] endBackgroundTask:backGroundTask];

如果您只支持iOS7,则现在可以使用NSURLSession代替NSURLConnectionNSURLSession可以管理完整的停止和恢复,以及在后台管理应用程序的长时间下载,根据设备的无线/单元活动做出明智的决定,以便不会耗尽用户电池(什么是知道节流) 您可以在https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/Introduction/Introduction.html上找到有关NSURLSession的更多信息 Matt Thompson的另一篇有趣的文章可以在这里找到 - http://www.objc.io/issue-5/from-nsurlconnection-to-nsurlsession.html
还可以在UIBackgroundTaskIdentifier上找到更多信息 - https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/