问题描述
var backgroundTask: uibackgroundtaskIdentifier = .invalid
func registerBackgroundeTask(){
backgroundTask = UIApplication.shared.beginBackgroundTask{
endBackgroundTask()
}
assert(backgroundTask != .invalid)
}
func endBackgroundTask() {
print("Background task ended.")
UIApplication.shared.endBackgroundTask(backgroundTask)
backgroundTask = .invalid
}
let alamofireManager = Alamofire.SessionManager(configuration: URLSessionConfiguration.background(withIdentifier: "com.nomad.app.background"))
registerBackgroundeTask()
//
alamofireManager.upload(multipartFormData:{ multipartFormData in
multipartFormData.append((orderId.data(using: String.Encoding.utf8)!),withName: "order_id")
if let choosenImage = DriverDetailsDB.getimageFromPath(imageName:"ticket\(String(describing: orderId)).jpeg") {
if let imageData : Data = choosenImage.jpegData(compressionQuality: 0.5) {
multipartFormData.append(imageData,withName: "image",fileName: "ticket\(String(describing: orderId)).jpeg",mimeType: "image/jpeg")
}
}
},to:serverUrl,method:.post,headers: requestHeader,encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload,_,_):
upload.responseJSON(completionHandler: { (responseData) in
print(responseData)
if let httpResponse = responseData.response,httpResponse.statusCode == 420 {
dispatchQueue.main.async {
failure(ErrorType.versionMismatch)
}
}
else {
switch responseData.result {
case .success(let value):
if let apiResponse = value as? Dictionary<String,AnyObject> {
if let response = apiResponse["response"] as? Dictionary<String,AnyObject> {
if response["status"] as? String == "success" {
// success
print("success status")
// endBackgroundTask()
success("success")
}else{
// failure
print("failure status")
success("failure")
}
}else{
// no status found
print("failure,no status field")
success("failure")
}
}else{
// api response error
print("failure,error response")
success("failure")
}
case .failure(let value):
success("failure")
}
}
})
case .failure(let value):
print("failure : \(value)")
success("failure")
}
})
}
我想使用Alamofire上传图片。并且我想在应用程序进入后台状态时继续上传过程。这是我使用Alamofire上传图像的代码。 当用户提交要上传的图像后,应用程序进入后台时,我想继续上传过程。我试图在上传时开始后台任务。回到地面后,这是继续我的上传过程的正确方法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)