【问题标题】:NSURLSession error when uploading on WiFi: NSURLErrorDomain Code=-999在 WiFi 上上传时出现 NSURLSession 错误:NSURLErrorDomain Code=-999
【发布时间】:2016-08-12 11:32:16
【问题描述】:

一年多前,我开发了一款应用,为用户提供照片共享和视频共享。它运行没有任何问题,直到几周前我引入了一个新功能:标记视频仅在 WiFi 可用时上传的可能性:视频设置为使用 NSURLSession 和 NSURLSessionConfiguration 其中allowCellular 设置为 NO .

大部分时间都可以正常工作:

  • 我将视频设置为在通过 3G/4G 连接时在 WiFi 上共享
  • 连接到 WiFi 网络后,视频上传没有问题

但是,有些用户在连接到 WiFi 后不会上传他们的视频。我从他们那里得到了一些日志,每当他们连接到 Wifi 时,我都会看到一个错误,出于某种原因,NSURLSession 将委托调用到:

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

出现以下错误:

Error: Error Domain=NSURLErrorDomain Code=-999 "(null)" UserInfo={NSErrorFailingURLStringKey=https://my-videos-bucket.s3.amazonaws.com/4074196678138134606/F17F7308-2810-4325-A5AF-BB8FFC093AC6.mov, NSURLErrorBackgroundTaskCancelledReasonKey=0, NSErrorFailingURLKey=https://my-videos-bucket.s3.amazonaws.com/4074196678138134606/F17F7308-2810-4325-A5AF-BB8FFC093AC6.mov}

有什么想法吗?会不会是服务器的问题?奇怪的是我无法重现它,也无法理解失败的原因

提前致谢!

【问题讨论】:

  • 任务好像被另一个任务取消了。 -999 用于 NSURLErrorCancelled。
  • 把你的 iPhone 带到星巴克,看看你是否能重现问题。用户可能会遇到强制网络。

标签: ios nsurlsession nsurlsessionuploadtask nsurlsessionconfiguration


【解决方案1】:

当您的应用取消请求时,通常会发生 999 错误 - 通过显式取消任务本身或通过使包含它的会话无效(或可能释放)。

但是,在后台下载的情况下,框架提供了更多信息。您会注意到字典键 NSURLErrorBackgroundTaskCancelledReasonKey) 的值为 0。如果您在文档中查找它,您会发现它对应于 NSURLErrorCancelledReasonUserForceQuitApplication

换句话说,请求被取消是因为用户明确地双击主页按钮并向上滑动以终止您的应用程序。结果后台下载被自动取消了。

请参阅NSURLSession Class Reference 了解更多信息。

【讨论】:

    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2018-10-11
    • 2017-12-04
    • 2018-01-22
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多