-
在用户抵制期间,我正在将一些照片上传到服务器。第一个是个人资料照片。电阻处理完成后,我想上传其余照片。意味着我要在获取用户ID和访问令牌后上传照片。意味着在成功上传图像之后,用户将进入“ matchesViewController”,然后仅启动上传过程。我也想在后台线程中上传这些照片。同样,如果应用程序在后台冲洗,则上传过程也应继续。所有上传过程均由Alamofire完成。
-
通过编写以下代码,照片可以成功上传,但是需要更多时间。这不是良好的用户体验。
-
还请告诉我当应用程序在后台线程中运行时如何继续上传过程。
-
如果代码不好,请根据需要帮助我修改代码中的任何更改。
我的代码是:-
private func handleRegistration (_ parameterDict : [String : Any]){
let url = USER_REGISTER_URL
let headers: HTTPHeaders = [
"Content-Type": "application/x-www-form-urlencoded"
]
Alamofire.upload(multipartFormData: { (multipartFormData) in
for (key,value) in parameterDict {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!,withName: key as String)
}
let random = randomString(length: 7)
multipartFormData.append(self.selectedProfilePic.image!.jpegData(compressionQuality: 0.4)!,withName: "fileset",fileName: "\(random).jpg",mimeType: "image/jpg")
},usingThreshold: UInt64.init(),to: url,method: .post,headers: headers) { (result) in
switch result{
case .success(let upload,_,_):
upload.responseJSON { response in
print(response)
var userId: String?
var token: String?
if let result = response.result.value {
let JSON = result as! NSDictionary
guard let accessToken = JSON["access_token"] as? String
else{ return }
guard let uid = JSON["User_Id"] as? String
else{return}
userId = uid
token = "bearer " + accessToken
UserDefaults.standard.set(Int(uid),forKey: "User_Id")
UserDefaults.standard.set(token,forKey: "access_token")
let phone = JSON["Phone_Number"] as? String
let FirstName = JSON["FirstName"] as? String
let email = uid + "@gmail.com"
let tempDictionary : Dictionary = [kFIRSTNAME : FirstName!,kLASTNAME : "",kFULLNAME : FirstName!,kPHONE : phone!,kREGISTERUSEID: userId,kEMAIL: email] as [String : Any]
self.checkdevicetokenAvailibility(uid: Int(userId!)!)
self.startRegistrationWithFirebase( detailDict: tempDictionary)
let storyBoard = uistoryboard(name: "Main",bundle: nil).instantiateViewController(withIdentifier: "MainTabbarView")
storyBoard.modalPresentationStyle = .fullScreen
self.present(storyBoard,animated: true,completion: nil)
if let message = JSON["Message"] as? String{
if message == "Please Upload a image."{
}
}
}
if userId != nil && token != nil{
self.multiImageUpload(userId: Int(userId!)!,token: token!)
}
print("Succesfully uploaded")
if let err = response.error{
// onError?(err)
// print(err.localizedDescription)
return
}
// onCompletion?(nil)
}
case .failure(let error):
print("Error in upload: \(error.localizedDescription)")
// onError?(error)
}
}
}