Ho dovuto affrontare uno strano problema. Carico file da Internet utilizzando NSURLSession
e NSURLSessionDownloadTask
. Ecco il codicetotalBytesExpectedToWrite è -1 in NSURLSessionDownloadTask
NSURLSessionConfiguration *sessionConfiguration =
[NSURLSessionConfiguration backgroundSessionConfiguration:kSessionId];
self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration
delegate:self
delegateQueue:[NSOperationQueue new]];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithRequest:request];
[downloadTask resume];
La mia classe è dichiarata come NSURLSessionDownloadDelegate
e ottengo bene callback. Ma quando il sistema chiama il metodo delegato
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
{
NSLog(@"totalBytesExpectedToWrite: %lld", totalBytesExpectedToWrite);
NSLog(@"%lld", totalBytesWritten);
}
totalBytesExpectedToWrite
sempre uguale -1
e non ho capacità di mostrare un progresso utente perché non so la dimensione del file di download.
Potrebbe chiedermi dove ho fatto un errore?
Potrebbe essere un problema di server in cui non sta inviando correttamente l'intestazione 'Content-Length' . Se si utilizza lo stesso URL nel browser, il browser mostra i progressi necessari? – rmaddy