Potrzebuję pobrać pliki> 500 Mo z AFNetworking. Czasami ich pobranie trwa> 10 minut, a jeśli aplikacja działa w tle, pobieranie nie może zostać ukończone.AFNetworking + duże pliki do pobrania + pliki do pobrania
Dlatego chcę wypróbować częściowe pliki do pobrania. Znalazłem wiele linków i wydaje się to możliwe dzięki metodom pause() i resume() w AFHTTPRequestOperation.
Właściwie zrobiłem:
[self.downloadOperation setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
// Clean up anything that needs to be handled if the request times out
[self.downloadOperation pauseDownload];
}];
DownloadOperation jest podklasą AFHTTPRequestOperation (singleton).
I AppDelegate:
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// resume will only resume if it's paused...
[[DownloadHTTPRequestOperation sharedOperation] resumeDownload];
}
Serwer jest OK, aby uzyskać nową serię w nagłówkach ...
Moje pytania:
1) IS-t dobry sposób to zrobić to ? 2) Czy wznowić musi zmienić outputStream (append: NO => append: YES)? A może jest on zarządzany gdzieś przez AFNetworking? (Nie znaleźć)
self.outputStream = [NSOutputStream outputStreamToFileAtPath:self.filePath append:YES];
coś takiego (w DownloadHTTPRequestOperation):
- (void)pauseDownload
{
NSLog(@"pause download");
[self pause];
}
- (void)resumeDownload
{
NSLog(@"resume download");
self.outputStream = [NSOutputStream outputStreamToFileAtPath:self.filePath append:YES];
[self resume];
}
Dzięki za pomoc.
BTW AFNetworking jest także "non ARC" – pahan
AFNetworking ARC jest teraz włączona. – tangqiaoboy