Приостановить, возобновить, отменить задачу загрузки с помощью 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-интерфейсов более низкого уровня.

Другие вопросы по тегам