è possibile ottenere lo spazio disponibile su disco per un dispositivo come questo utenti:
- (NSNumber *)getAvailableDiskSpace
{
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/var" error:nil];
return [attributes objectForKey:NSFileSystemFreeSize];
}
sarà probabilmente necessario per avviare il download per ottenere la dimensione del file che si sta scaricando. Esiste un metodo delegate conveniente per NSURLSession che fornisce i byte attesi quando riprende l'attività:
- (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];
}
}
Prima di iniziare il download, ottenere le dimensioni del file e controllare lo spazio libero nel dispositivo. In modo che tu possa informare l'utente se non c'è abbastanza spazio libero. – Mrunal
Ecco un modo per controllare lo spazio disponibile: http://stackoverflow.com/questions/5712527/how-to-detect-total-available-free-disk-space-on-the-iphone-ipad-device – Mrunal
@Mrunal Questo non risolve completamente il problema. Cosa succede se c'è un'altra app che scarica un file di grandi dimensioni in background? – HAS