URLSession后台上传任务保持重置

时间:2016-12-14 12:33:28

标签: ios nsurlsession nsurlsessiondatatask nsurlsessionuploadtask urlsession

uploadTask使用URLSessionConfiguration.background时,我遇到了一些奇怪的行为。

我的自定义委托正在实施属于URLSessionDelegateURLSessionTaskDelegateURLSessionDataDelegate的所有委托方法。所有这些语句都有一个print语句,表明该方法已被调用。

我正在尝试将五个图像上传到服务器,每个图像都有自己的会话,其id与图像ID匹配。

问题是,当使用非常慢的连接和#34;上传时,上传进度将在达到100%之前重置。每当调用didFinishCollectingMetrics时都会发生这种情况,您可以在此处看到:{{ 3}}

使用慢速连接时,这种情况不会发生,但只是在某些时候。

有人对这里发生的事情有任何想法吗?

2 个答案:

答案 0 :(得分:1)

边缘网络众所周知是不可靠的,频繁上传失败并非典型。解决这个问题的方法是将基于整个文件的上传替换为某种形式的分块上传,这样您就可以继续上传,但这需要服务器支持。

答案 1 :(得分:0)

为请求和资源增加NSURLSession的超时时间:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
[configuration setTimeoutIntervalForRequest:120];
[configuration setTimeoutIntervalForResource:240];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];

使用session上传图片