方案在上载过程中将应用程序带到后台和前台多次,调用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会话的生命周期”的文档