我正在使用AlamoFire
进行网络操作。
如果应用在后台运行时执行了网络操作(用户单击“主页”按钮)
当应用从后台返回时,下一个请求将导致以下错误:
FAILURE: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort"
UserInfo={_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <488FE19B-E66B-4562-893D-7498DCB00B84>.<5>,
_kCFStreamErrorDomainKey=1,
_NSURLErrorRelatedURLSessionTaskErrorKey=("LocalDataTask <488FE19B-E66B-4562-893D-7498DCB00B84>.<5>"),
_kCFStreamErrorCodeKey=53}
我找不到重置AlamoFire,URLSession等以再次启用网络操作的方法。
建议的解决方法是使用后台任务,
尝试运行包装在beginBackgroundTask()
/ beginBackgroundTask()
中的请求似乎无法解决问题。
var taskId : UIBackgroundTaskIdentifier = -1
taskId = UIApplication.shared.beginBackgroundTask {
UIApplication.shared.endBackgroundTask(taskId)
}
if taskId == -1 {
return
}
let req = Alamofire.request(...)
req.responseObject {
// using EVReflection to turn response to object
}
UIApplication.shared.endBackgroundTask(taskId)
我使用后台任务是否出错?这个问题有解决方案吗?