Hem*_*ang 5 php web-services file-upload download ios
我想在以下条件下从 iOS 应用程序向服务器上传或下载大文件。
1)如果我的应用程序进入后台,它应该执行上传和下载。
2)如果我失去了连接,那么它应该停止任何渐进式上传和下载,然后可以从停止的地方恢复。
3)如果我从托盘关闭应用程序,那么当应用程序重新启动时,它将遵循第二点相同的情况。
我真的很想知道这可能吗NSURLConnection?
我非常了解ASIHttpRequest和AFNetworking库,我不想使用任何外部库,而是想使用默认NSURLConnection类。
NSURLConnection如果它的连接是持久的并且应用程序在后台运行,我就可以下载和上传。
对于第三种情况,我的想法如下:
如果应用程序将终止,我需要将上传或下载进度存储在某处,以便下次我需要发送“范围”以继续下载。
但我不确定服务器本身将如何处理?如何为此配置服务器?如何为此配置网络服务?有任何想法吗?
因为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];
Run Code Online (Sandbox Code Playgroud)
如果您只支持iOS7您现在可以使用NSURLSession代替NSURLConnection. NSURLSession可以管理完全停止和恢复,以及在后台使用应用程序管理长时间下载,根据设备的无线/蜂窝活动做出明智的决策,以免耗尽用户电池(即所谓的节流)。
您可以找到更多有关NSURLSession- https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/Introduction/Introduction.html
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/上找到更多信息
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |