Мне нужно скачать файлы > 500 мес с помощью AFNetworking. Иногда время их загрузки составляет> 10 минут, и если приложение находится в фоновом режиме, загрузка не может быть завершена.
Поэтому я хочу попробовать частичные загрузки. Я нашел много ссылок, и это кажется возможным с помощью методов pause ()и возобновления ()в 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];
}
Сервер в порядке, чтобы получить новый диапазон в заголовках...
Мои вопросы:
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];
}
Спасибо за вашу помощь.