【问题标题】:URLSession background upload task keeps resettingURLSession后台上传任务不断重置
【发布时间】:2016-12-14 12:33:28
【问题描述】:

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

我的自定义委托正在实现属于URLSessionDelegateURLSessionTaskDelegateURLSessionDataDelegate 的所有委托方法。它们都有一个print 声明,表明该方法已被调用。

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

问题是当使用非常慢的连接“edge”上传时,上传进度将在达到 100% 之前重置。每当调用 didFinishCollectingMetrics 时都会发生这种情况,如您在此处看到的:Data

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

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

【问题讨论】:

  • 你解决了这个问题吗?

标签: ios nsurlsession nsurlsessiondatatask nsurlsessionuploadtask urlsession


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    使用session 上传您的图片

    【讨论】:

    • @zain-dev 谢谢你的回答。它似乎无法解决问题。我尝试将超时设置为300,但现在我收到消息“请求超时”。这是我以前没有得到的。
    • @frederik di 你解决问题了吗?我有同样的问题,但视频上传。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    相关资源
    最近更新 更多