Мое приложение должно загрузить довольно большой файл (390Mb), Я использую TCBlopDownloadSwift для загрузки (я преобразовал его для swift 2.0, и он отлично работает), и я создал конфигурацию для загрузки фонового изображения. Я хочу, чтобы приложение перестало работать, чтобы возобновить загрузку. Я обнаружил, что когда приложение закрыто, я все еще могу найти загруженные данные в кеше (в «com.apple.nsurlsessiond/Downloads /» + bundleIdentifier) в виде файла tmp. Но когда я пытаюсь получить данные загрузки с помощью:Как возобновить загрузку при приложении силы-Бросить?
func dataInCacheForName (name : String) -> NSData? {
let PathToCache = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory , .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent("com.apple.nsurlsessiond/Downloads/" + bundleIdentifier)
let path = (PathToCache as NSString).stringByAppendingPathComponent(name)
let data = NSData(contentsOfFile: path)
print("data : \(data?.length)")
return data
}
возвращает ноль, но файл не равен нулю. Я могу переместить файл, поэтому я попытался переместить файл в документы. Но если я пытаюсь возобновить загрузку с данными, я получаю ошибки:
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
недействительные данные резюме для фона загрузки. Фоновые загрузки должны использовать http или https и должны загружаться в доступный файл.
и в URLSession
(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError sessionError: NSError?)
error userInfo : Optional([:])
: Optional(Error Domain=NSURLErrorDomain Code=-3003 "(null)")
код ошибки -3003 означает, что невозможно записать в файл
Я прочитал много пост и еще не могу найти ответ
наиболее перспективным был https://forums.developer.apple.com/thread/24770
Почему вы просто не используете NSURLSession и не загружаете файл в фоновое задание? – Lefteris
Я загружаю файл в качестве фоновой задачи, я хочу, чтобы приложение принудительно завершило загрузку: если пользователь перезагрузит приложение, возобновите загрузку там, где он остановился, с данными, сохраненными в кеше – kholl
Если вы настроили фоновая задача NSURLSession, загрузка осуществляется операционной системой, а не вашим приложением. Ваше приложение может прекратить/сбой, но загрузка не прекратится. – Lefteris