方案在上载过程中将应用程序带到后台和前台多次,调用didCompleteWithError:方法时将应用程序带到前台,且错误参数为null。概率是1/3。

我如何找出出了什么问题,因为错误参数没有给出任何结果。

最佳答案

问题在于,didCompleteWithError仅报告客户端错误,报告,否则为nil。 iOS文件说:

“服务器错误不会通过error参数报告。
您的代表通过error参数收到的唯一错误是客户端错误
例如无法解析主机名或无法连接到主机。”

这是文档的link

如果要检查会话的错误,则必须实现会话协议委托

- URLSession:didBecomeInvalidWithError:

在停止使用会话后,请记住使该会话无效。
因此,如果您这样创建一个NSURLSession:
NSURLSessionConfiguration *backgroundConfigurationObject = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"applycasession"];
    self.backgroundSession = [NSURLSession sessionWithConfiguration:backgroundConfigurationObject delegate:self delegateQueue:[NSOperationQueue mainQueue]];

使用完毕后,您必须致电:
 [self.backgroundSession invalidateAndCancel];

请在此link中阅读有关“URL会话
生命周期”的文档

10-08 07:09