I download the song and then play it on the button. Everything in this part working. But I want to monitor the download indicator and pause and resume downloading. But delegate methods not called.
class ViewController: UIViewController, URLSessionDownloadDelegate, URLSessionTaskDelegate,URLSessionDelegate {
@IBOutlet weak var progressBar: UIProgressView!
let url = URL(string: "https://www.dropbox.com/s/s7zkka3at171wf8/Track01.mp3?raw=1")!
var audioPlayer : AVAudioPlayer!
var task: URLSessionDownloadTask!
let configuration1 = URLSessionConfiguration.default
var urlSession: URLSession!
let operationQueue1 = OperationQueue()
var url1 : URL!
// MARK: - Life CYcle
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - IBActions
@IBAction func playAudio(_ sender: Any) {
do {
audioPlayer = try AVAudioPlayer(contentsOf: self.url1)
audioPlayer.play()
}
catch {
print("error")
}
}
@IBAction func pauseAudio(_ sender: Any) {}
@IBAction func downloadButton(_ sender: Any) {
guard let audioUrl = URL(string: "https://www.dropbox.com/s/s7zkka3at171wf8/Track01.mp3?raw=1") else {
return
}
// then lets create your document folder url
let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
// lets create your destination file url
let destinationUrl = documentsDirectoryURL.appendingPathComponent(audioUrl.lastPathComponent)
print(destinationUrl)
// to check if it exists before downloading it
if FileManager.default.fileExists(atPath: destinationUrl.path) {
print("The file already exists at path")
self.url1 = destinationUrl
// if the file doesn't exist
}
else {
print("0")
urlSession = URLSession(configuration: configuration1, delegate: self, delegateQueue: operationQueue1)
task = urlSession.downloadTask(with: audioUrl) { (location, response, error) in
guard
let location = location else {
return
}
do {
try FileManager.default.moveItem(at: location ,to : destinationUrl)
print("File moved to documents folder")
self.url1 = destinationUrl
}
catch let error as NSError{
print(error.localizedDescription)
}
print("1")
}
task.resume()
print("2")
}
print("3")
}
// MARK: -
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
print("fineshed download file")
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
print(totalBytesWritten)
print(totalBytesExpectedToWrite)
}
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
print("All success")
}
}