- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我得到一个
Error Domain=NSURLErrorDomain Code=-997 "Lost connection to background transfer service"
当我在启动后台下载过程后锁定屏幕时。我正在使用 Alamofire,但我认为这也会发生在常规 URLSession 上。如果我软关闭应用程序,下载会继续工作,但一旦我锁定我的设备,它就会开始抛出此错误。
下面是代码的相关部分:
private(set) lazy var alamoSessionManager: SessionManager = {
let config = URLSessionConfiguration.background(withIdentifier: "MySession")
config.isDiscretionary = true
config.sessionSendsLaunchEvents = true
config.shouldUseExtendedBackgroundIdleMode = true
return Alamofire.SessionManager(configuration: config)
}()
let route = buildRouter()
alamoSessionManager.request(url, method: route.method, parameters: route.parameters, encoding: JSONEncoding.default, headers: route.headers)
我查看了控制台以查看是否有任何守护进程崩溃但找不到任何守护进程。锁定屏幕后我立即看到三个错误:
BKLogEvent: couldn't find CombinedSequence properties
Task <>.<48> finished with error - code: -999
Task <>.<48> load failed with error Error Domain=NSURLErrorDomain Code=-997 "Lost connection to background transfer service" UserInfo={NSErrorFailingURLStringKey=, NSErrorFailingURLKey=, _NSURLErrorRelatedURLSessionTaskErrorKey=, _NSURLErrorFailingURLSessionTaskErrorKey=, NSLocalizedDescription=Lost connection to background transfer service} [-997]
error._userInfo 是这样的:
▿ Optional<AnyObject>
▿ some : 5 elements
▿ 0 : 2 elements
- key : NSErrorFailingURLStringKey
- value : https://www.myweb.com/api
▿ 1 : 2 elements
- key : NSErrorFailingURLKey
- value : https://www.myweb.com/api
▿ 2 : 2 elements
- key : _NSURLErrorRelatedURLSessionTaskErrorKey
▿ value : 2 elements
- 0 : BackgroundDataTask <C39E-2FC73>.<27>
- 1 : LocalDataTask <C39E-2FC73>.<27>
▿ 3 : 2 elements
- key : _NSURLErrorFailingURLSessionTaskErrorKey
- value : BackgroundDataTask <C39E-2FC73>.<27>
▿ 4 : 2 elements
- key : NSLocalizedDescription
- value : Lost connection to background transfer service
最佳答案
Alamofire 目前与后台 session 并不真正兼容,这既是因为无法持久化和重新连接其闭包 API,也是因为它 invalidateAndCancel()
URLSession
在 deinit
d 时。我们建议您直接将 URLSession
用于后台 session ,或将前台 session 与后台任务 API 结合使用。
关于ios - 当设备因错误而锁定时,URLSessionConfiguration 后台下载任务失败 - 与后台传输服务的连接丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975122/
我有 FirstViewController,带有要在 SecondTableViewController 中移动的按钮。在 SecondTableViewController 中,我有单元格,如果我
我已经使用默认配置定义了 session 配置,并提供了 tlsMinimumSupportedProtocol 作为 TLSv1.2 我正在使用 Alamofire,但我的应用程序仍然支持较低版本
我得到一个 Error Domain=NSURLErrorDomain Code=-997 "Lost connection to background transfer service" 当我在启动
给定以下 Playground : import Foundation let config = URLSessionConfiguration.default let session = URLSe
从 iOS 11 开始我们可以设置: let sessionConfiguration = URLSessionConfiguration.default sessionConfiguration.m
请注意,我已经尝试了很多解决方案,例如 this但都没有用。 这里是 screenshot和代码; func downloadItems() { let urlE: String = "htt
在我的 iOS 应用程序中,我使用默认配置创建一个 URLSession: // Part #1 let urlSession = URLSession(configuration: .defa
我是一名优秀的程序员,十分优秀!