对于所有 < 12 的 iOS 版本,它都工作正常。 我正在使用基本 URLSession 在我的应用程序中进行测试(iOS ~> 12.x),并尝试使用 Alamofire。
测试步骤:
1.点击任何 HTTP/API 调用。
2.立即点击主页按钮。
过一段时间就会来
2018-12-14 13:43:46.968901+0530 NewReader[15364:4847228] Task <519A3F27-90DA-439F-8711-B07EFA62E823>.<1> load failed with error Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <519A3F27-90DA-439F-8711-B07EFA62E823>.<1>, _kCFStreamErrorDomainKey=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <519A3F27-90DA-439F-8711-B07EFA62E823>.<1>"
), _kCFStreamErrorCodeKey=53} [53]
我不知道其他应用程序如何解决这个问题。 还提出了问题here
让我知道修复或解决方法。
P.S.:我已经尝试过Dispatch或Delay,但它不起作用。
最佳答案
您需要为 URLSession 配置后台功能。情况一直如此,但之前进入后台时它会继续工作很短的时间(通常最多 3 分钟)。最近的更新可能变得更加严格,或者您的请求需要的时间比可用时间更长。
首先,您需要在功能选项卡中启用后台模式。
这里是一些示例代码,展示如何设置 URLSession 为后台做好准备
private lazy var bgSession: URLSession = {
let config = URLSessionConfiguration.background(withIdentifier: Constant.sessionID.rawValue)
//config.isDiscretionary = true
config.sessionSendsLaunchEvents = true
return URLSession(configuration: config, delegate: self, delegateQueue: nil)
}()
代码示例和更多信息可从以下article获得
关于当 HTTP 请求命中并且应用程序突然进入后台时,iOS 12 URLSession 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53775848/