ios nsurlsession nsurlsessiondownloadtask

ios - ¿Qué sucede si el espacio en disco se agota al utilizar NSURLSessionDownloadTask en segundo plano?



(1)

Puede obtener el espacio en disco disponible para un dispositivo de usuarios como este:

- (NSNumber *)getAvailableDiskSpace { NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/var" error:nil]; return [attributes objectForKey:NSFileSystemFreeSize]; }

Es probable que necesite iniciar la descarga para obtener el tamaño del archivo que está descargando. Existe un método de delegado conveniente para NSURLSession que le da los bytes esperados a la derecha mientras se reanuda la tarea:

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes { // Check if we have enough disk space to store the file NSNumber *availableDiskSpace = [self getAvailableDiskSpace]; if (availableDiskSpace.longLongValue < expectedTotalBytes) { // If not, cancel the task [downloadTask cancel]; // Alert the user UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Low Disk Space" message:@"You don''t have enough space on your device to download this file. Please clear up some space and try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } }

En una aplicación iOS 8.1, estoy usando NSURLSessionDownloadTask para descargar un archivo en segundo plano que a veces puede ser bastante grande.

Todo funciona bien, pero ¿qué pasará si el teléfono se queda sin espacio en el disco? ¿La descarga fallará e indicará que fue un problema de espacio de disco restante? ¿Hay alguna buena manera de comprobar con antelación?