【发布时间】:2018-11-19 04:22:38
【问题描述】:
我正在使用Alamofire 将PDF 文件上传到服务器。我创建了backgroundSessionManager 以确保应用程序在后台时上传文件。当我从AppDelegate 方法handleEventsForBackgroundURLSession 调用backgroundCompletionHandler 时,代码完美运行。
进度是我正在显示进度,当应用程序进入后台时,进度卡住了,.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 页面,但没有找到解决方案。如果我犯了任何错误,任何人都可以指导吗?
【问题讨论】:
-
是的!对我来说,后台代码工作正常,prbm 声明为
.uploadProgress停止调用。 -
其实我在这里找到了答案:stackoverflow.com/a/55024775/3402095
-
我认为您需要将关闭重新附加到特定的上传任务
-
@Whirlwind 这行得通吗?我需要检查
标签: swift file-upload background alamofire