Приостановить, возобновить, отменить задачу загрузки с помощью NSURLSession UploadTask
Я разрабатываю приложение для загрузки нескольких файлов, используя NSURLSession, сейчас мои файлы успешно загружены. Но сейчас я хочу приостановить, возобновить и отменить загрузку, как мы делаем в задачах загрузки. Является ли это возможным.? Любая помощь будет оценена. Thnx
2 ответа
Я много изучал, но ничего не смог найти. После того, как я попробовал это в своем коде, предполагая, что это задача загрузки, я узнал, что мы можем "приостанавливать, возобновлять" задачи загрузки, также используя NSURLSession, как мы делаем это при загрузке задач.
Чтобы приостановить задачу, просто позвоните [yourUploadTask suspend];
возобновить [yourUploadTask resume];
Отменить [yourUploadTask cancel];
Это может помочь кому-то, работающему на uploadTask, используя NSURLSession.
Вы можете попробовать использовать методы suspend(), resume(), унаследованные от URLSessionTask, но resume () приведет к сбою загрузки. Вы можете обойти это в своем классе загрузки, автоматически повторяя попытки загрузки (т. Е. Любую непостоянную ошибку, отличную от 400), но это означает повторный запуск каждой ожидающей загрузки с самого начала и потерю уже загруженных данных.
Для URLSessionUploadTask нет отмены (byProroductionResumeData completeHandler: @escaping (Data?) -> Void), как для URLSessionDownloadTask, поэтому нет данных о состоянии, сохраненных для восстановления и продолжения загрузки. Чтобы реализовать его, потребовалось бы развернуть наш собственный, что я еще не сделал (пока), но я считаю, что для реализации требуется поддержка конкретного сервера и пользователя сетевых API-интерфейсов более низкого уровня.