swift3 - Resume Data from URLSessionDownloadTask Always nil -


i have app need download file internet when downloading file it's work problem when pressed pause button pause downloading 1 minute or more nil resume data

the following code :

@ibaction func startdownloading(_ sender: uibutton) {          isdownload = true     sessionconfig = urlsessionconfiguration.default     let operationqueue = operationqueue.main     session = urlsession.init(configuration: sessionconfig, delegate: self, delegatequeue: operationqueue)     let url = url(string: "www.example.com")     downloadtask = session.downloadtask(with: url!)     downloadtask.resume() } @ibaction func pause(_ sender: uibutton)  {     if downloadtask != nil && isdownload      {         self.downloadtask!.cancel(byproducingresumedata: { (resumedata) in                         // here nil resume data                     })         isdownload = false         downloadtask = nil         pasuebtnoutlet.settitle("resume", for: .normal)     }     if !isdownload && downloaddata != nil      {         downloadtask = session.downloadtask(withresumedata: downloaddata data)         downloadtask.resume()         isdownload = true         downloaddata = nil         pasuebtnoutlet.settitle("pause", for: .normal)     }                     } 

please can me

thanks all

your code seems correct, need init downloaddata resumedata in closure

make property of downloaddata

var downloaddata:data! 

and in pause button action cancel task, set downloaddata resumedata

self.downloadtask!.cancel(byproducingresumedata: { (resumedata) in         // here nil resume data          // have set download data resume data         self.downloaddata = resumedata }) 

in order check progress , completion, implement these urlsessiondownloaddelegate delegates

func urlsession(_ session: urlsession, downloadtask: urlsessiondownloadtask, didwritedata byteswritten: int64, totalbyteswritten: int64, totalbytesexpectedtowrite: int64) {     let progress = float(totalbyteswritten) / float(totalbytesexpectedtowrite)     print(int(progress * 100))  }  func urlsession(_ session: urlsession, downloadtask: urlsessiondownloadtask, didfinishdownloadingto location: url) {     print("downloading done") } 

note:- try valid downloadable url. example http://www.star.uclan.ac.uk/news_and_events/news/2010020901/sdo_resolution_comparison.png

its http, make sure set transport security in info.plist


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -