在WiFi上传时出现NSURLSession错误:NSURLErrorDomain代码= -999

时间:2016-08-12 11:32:16

标签: ios nsurlsession nsurlsessionuploadtask nsurlsessionconfiguration

我在一年多前制作了一款应用,为用户提供照片共享和视频共享。几周之前我就引入了一项新功能:没有任何问题:只有当WiFi可用时才标记要上传的视频:视频设置为使用带有NSURLSessionConfiguration的NSURLSession,其中allowCellular设置为NO

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

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

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

enumerate()

出现以下错误:

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

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

有关详细信息,请参阅NSURLSession Class Reference