Böyle bir Kullanıcılar cihaz için kullanılabilir disk alanı elde edebilirsiniz:
- (NSNumber *)getAvailableDiskSpace
{
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/var" error:nil];
return [attributes objectForKey:NSFileSystemFreeSize];
}
Büyük olasılıkla indirmekte olduğunuz dosyanın boyutunu almak için indirmeye başlamak gerekecektir.
- (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];
}
}
indir başlamadan önce, dosya boyutunu almak ve cihazda boş alan kontrol: Görev sürdürme sağ olarak size beklenen verir bayt NSURLSession için uygun bir temsilci yöntemi yoktur. Yeterli boş alan yoksa kullanıcıyı bilgilendirebilirsiniz. – Mrunal
Boş alanı kontrol etmenin bir yolu: http://stackoverflow.com/questions/5712527/how-to-detect-total-available-free-disk-space-on-the-iphone-ipad-device – Mrunal
@Mrunal Bu problemi tamamen çözmez. Arka planda büyük bir dosyayı indiren başka bir uygulama varsa ne olur? – HAS