Я загружаю PDF
файл на сервер, используя Alamofire
.Я создал backgroundSessionManager
, чтобы приложение загружало файл в фоновом режиме.Код работает отлично, так как я получаю вызов по backgroundCompletionHandler
из AppDelegate
метода handleEventsForBackgroundURLSession
.
Прогресс в том, что я показываю прогресс, и когда приложение переходит в фоновый режим, прогресс застревает, и .uploadProgress
завершение также не вызывает.Из-за этого, когда пользователь уходит в фоновом режиме и через некоторое время, когда возвращается, прогресс не увеличивается.
Общий экземпляр:
class Networking {
static let sharedInstance = Networking()
public var backgroundSessionManager: Alamofire.SessionManager // your web services you intend to keep running when the system backgrounds your app will use this
private init() {
self.backgroundSessionManager = Alamofire.SessionManager(configuration: URLSessionConfiguration.background(withIdentifier: "com.dw.myapp"))
var backgroundCompletionHandler: (() -> Void)? {
get {
return backgroundSessionManager.backgroundCompletionHandler
}
set {
backgroundSessionManager.backgroundCompletionHandler = newValue
}
}
}
}
Загрузка файлакод
Networking.sharedInstance.backgroundSessionManager.upload(multipartFormData: { (multipartData) in
}, usingThreshold: UInt64.init(), to: "\(url)", method: .post, headers: headers) { (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
//Does not call while app is in background
Helper.dispatchMain {
print(progress)
print("Upload Time ", Date())
}
})
upload.responseJSON { response in
print("Response Time ", Date())
print("Response Time ", Date())
}
case .failure(let error):
completion!(["message" : error],false)
}
}
У меня поиск по SO и странице github, но я не нашел решения.Любой может направлять, если я делаю какую-либо ошибку?