İçeriğe geç

URLSessionDownloadDelegate kullanımı

Merhabalar bu yazımda iOS uygulamalarınızda internet üzerinden dosya indirme işlemini nasıl gerçekleştirebileceğinizi göstereceğim.

URLSession sınıfını çoğumuz aktif şekilde web servis ile bağlantı veri,alıp gönderme işlemlerinde kullanmaktayız. Bu sınıfı kullanarak internet üzerinden örneğin .pdf dosyasını byte byte alabilir, cihaz üzerinde kaydedebilirsiniz. Bu işlem için .dowloadTask fonksiyonundan yararlanacağız. Ve byte byte veri alımını URLSessionDownloadDelegate üzerinde bulunan fonksiyonlar sayesinde alabileceğiz.

İşlem oldukça rahat ve kullanışlı bir şekilde gerçekleştirilmekte. Aldığınız byte değerlerine görede progress işlemide gerçekleştirebilirsiniz.

Lafı fazla uzatmadan yazdığım örneği sizlerle paylaşayım. Kodu inceleyip deneyerek olaya hakim olabilirsiniz.

import UIKit

class mainVC: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        downloadTask()
    }
    
    func downloadTask() {
  
        let urlStr = "http://web.itu.edu.tr/~sonmez/lisans/ai/yapay_zeka_icerik1_1.6.pdf"
        
        let conf = URLSessionConfiguration.default
        let session = URLSession(configuration: conf, delegate: self, delegateQueue: OperationQueue())
        let url = URL(string: urlStr)
        
        if let url = url {
            session.downloadTask(with: url).resume()
        }
    }
    
    override var prefersStatusBarHidden: Bool {
        return true
    }
}//

extension mainVC: URLSessionDownloadDelegate {
    
    func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
        print("finish loading",location.path)
    }
    
    func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
        print("load ->\(totalBytesWritten) max: \(totalBytesExpectedToWrite)")
    }
}

 

Tarih:iOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca