2017-09-20 2 views
2

Momentan arbeite ich an dem Herunterladen einer Datei vom Server, und das funktioniert gut. Wie kann man die Wiederaufnahmefähigkeit der aktuellen URLSessionDownloadTask überprüfen?


meine Frage ist, wie würde ich wissen, dass URL hat Fähigkeit oder nicht vor dem eigentlichen Download gestartet?
unten ist ein Code-Schnipsel,

class Downloader:NSObject,URLSessionDownloadDelegate { 
    /* 
    SOME PROPERTIES & DECLARATIONS 
    */ 

    override init() { 
     super.init() 
     let backgroundSessionConfiguration = URLSessionConfiguration.background(withIdentifier: url.absoluteString) 
     backgroundSessionConfiguration.networkServiceType = .default 
     self.defaultSession = URLSession(configuration: backgroundSessionConfiguration, delegate: self, delegateQueue: OperationQueue.main) 
    } 

    func start(_ block:DownloaderCompletionHandler?) { 
     guard self.input == nil else { return } 
     guard self.output == nil else { return } 
     if let data = self.resumableData { 
      self.downloadTask = self.defaultSession.downloadTask(withResumeData: data) 
     }else { 
      let request = URLRequest(url: self.input!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 0.60) 
      self.downloadTask = self.defaultSession.downloadTask(with: request) 
     } 
     self.downloadTask.resume() 
    } 
    func pause() { 
     self.downloadTask.cancel { (data) in 
      self.resumableData = data 
     } 
    } 
} 

bitte, mich auf diese Situation guid. Vielen Dank im Voraus

+0

Was Sie mit dem Lebenslauf Kapazität bedeuten Sie? Beziehen Sie sich auf die Möglichkeit, fortzufahren, nachdem der Download unterbrochen wurde? – user1046037

+0

@ user1046037, ja, ich habe diesen Teil der Frage bearbeitet. Kannst du ein Beispiel zeigen? – Vats

+0

Alle 'URLSessionTask's können ausgesetzt und fortgesetzt werden. Rufen Sie einfach die Funktion 'suspend' /' resume' auf. Probieren Sie es selbst aus Ich habe es nicht selbst ausprobiert. Soweit ich weiß, hat es nichts zu einer bestimmten URL – user1046037

Antwort

0

, wenn Sie eine Anfrage mit Range im httpheaders senden und einen 206-Statuscode als Antwort erhalten, dann können Sie den Download wieder aufzunehmen. Andernfalls kann der Download nicht fortgesetzt werden.

Lesen Sie mehr über es here

+0

Hallo, danke für sofortige Antwort, wird versuchen und Ihnen Ergebnisse zu geben. – Vats

+0

Ja, ich habe den Statuscode 206, aber meine Frage ist, diese Informationen während des Downloads zu bekommen. Gibt es einen Weg dafür? – Vats

Verwandte Themen