Мне нужно скачать файлы> 500 Mo с AFNetworking. Иногда время их загрузки составляет> 10 минут, и если приложение находится в фоновом режиме, загрузка не может быть завершена.AFNetworking + большие файлы для скачивания + резюме загрузки
Так что я хочу попробовать частичную загрузку. Я нашел много ссылок, и это кажется возможным с помощью методов pause() и resume() в AFHTTPRequestOperation.
На самом деле, я сделал:
[self.downloadOperation setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
// Clean up anything that needs to be handled if the request times out
[self.downloadOperation pauseDownload];
}];
DownloadOperation подкласс AFHTTPRequestOperation (Singleton).
И в AppDelegate:
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// resume will only resume if it's paused...
[[DownloadHTTPRequestOperation sharedOperation] resumeDownload];
}
Сервер OK, чтобы получить новый диапазон в заголовках ...
Мои вопросы:
1) Является ли-т хороший способ сделать Это ? 2) Требуется ли резюме для изменения outputStream (append: NO => append: YES)? Или это где-то управляется AFNetworking? (Не найти)
self.outputStream = [NSOutputStream outputStreamToFileAtPath:self.filePath append:YES];
Что-то вроде этого (в DownloadHTTPRequestOperation):
- (void)pauseDownload
{
NSLog(@"pause download");
[self pause];
}
- (void)resumeDownload
{
NSLog(@"resume download");
self.outputStream = [NSOutputStream outputStreamToFileAtPath:self.filePath append:YES];
[self resume];
}
Спасибо за вашу помощь.
BTW AFNetworking является также "не ARC" – pahan
AFNetworking теперь ARC включена. – tangqiaoboy