2015-12-14 1 views
2

Voilà comment j'utilise NSURLSessionDownloadTask:Comment faire pour marquer NSURLSessionDownloadTask?

let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration() 
    let sessionManager = AFURLSessionManager(sessionConfiguration: sessionConfiguration) 

    if let url = NSURL(string: URLString) { 

     let request = NSURLRequest(URL: url) 
     let sessionDownloadTask = sessionManager.downloadTaskWithRequest(request, progress: nil, destination: { (url, response) -> NSURL in 

      self.createDirectoryAtPath(destinationPath) 

      return destinationPath.URLByAppendingPathComponent(fileName) 

      }, completionHandler: { response, url, error in 

       completionBlock(error) 
     }) 

     sessionDownloadTask.resume() 
    } 

Je sais que je peux appeler sessionDownloadTask.cancel() et sessionDownloadTask.resume(), mais je dois appeler là-bas .pause(), puis .resume() continuer le téléchargement. C'est possible?

Répondre

4

Cette méthode de NSURLSessionTask

.suspend() 

Doc

Une tâche, alors qu'il était suspendu, ne produit pas le trafic réseau et ne sont pas soumis à temps morts. Une tâche de téléchargement peut continuer à transférer des données ultérieurement. Toutes les autres tâches doivent recommencer à la reprise.

+1

suspension() ne fonctionne pas pour elle. La documentation Apple indique qu'elle n'est pas sujette à des délais d'attente MAIS si vous faites une petite expérience, elle se révèle contraire: 1) reprendre la tâche et la suspendre peu après 2) attendre une durée égale à timeoutIntervalForRequest (NSURLSessionConfiguration) 3) vous recevrez une erreur timeout; La seule façon que je vois pour implémenter cette fonctionnalité est d'utiliser la méthode cancelByProducingResumeData de la tâche de téléchargement. – alex1704

0

Ne pas appeler la sessionDownloadTask.cancel() utiliser au lieu de l'appel sessionDownloadTask.cancelByProducingResumeData et chaque fois que vous voulez reprendre le téléchargement utilisez la méthode de la méthode NSURLSession

sessionManager.downloadTaskWithResumeData:resumeDataObject