当HTTP请求命中且应用突然进入后台时,iOS 12 URLSession中断

时间:2018-12-14 08:22:12

标签: ios swift nsurlsession urlsession

对于所有iOS版本<12,它都可以正常工作。 我正在使用基本的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

让我知道修复程序或解决方法。

PS::我已经尝试过 Dispatch Delay 无效。

1 个答案:

答案 0 :(得分:1)

您需要使用后台功能配置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