Saya mengunduh file di latar belakang menggunakan konfigurasi sesi latar belakang NSURLSession.
- (void)initBackgroundSession {
self.backgroundSessionManager = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:IELBackgroundSesssionCourseDownload] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
[self updateCurrentDownloadingCourse];
self.isSuspendcourseDownloadTask = false;
}
- (void)updateCurrentDownloadingCourse {
[_backgroundSessionManager getTasksWithCompletionHandler:^(NSArray<NSURLSessionDataTask *> * _Nonnull dataTasks, NSArray<NSURLSessionUploadTask *> * _Nonnull uploadTasks, NSArray<NSURLSessionDownloadTask *> * _Nonnull downloadTasks) {
NSLog(@"Count of DownloadTask %lu",(unsigned long)downloadTasks.count);
for (NSURLSessionDownloadTask *downloadTask in downloadTasks) {
NSDictionary *customDescription = [downloadTask getCustomTaskDescription];
NSString *courseId = customDescription[IELCourseJSONKeyCoureID];
if (courseId) {
[self setDownloadingCourse_id:courseId];
[self setCourseDownloadTask:downloadTask];
break;
}
[downloadTask resume];
}
}];
}
Sekarang masalahnya adalah jika pengunduhan sedang berlangsung dan saya menutup aplikasi dari latar belakang dengan menekan tombol beranda dua kali. Dan kemudian jika saya membuka kembali aplikasi tersebut. Kemudian semua unduhan mulai gagal dengan pesan kesalahan yang diberikan di bawah ini. Jika saya menambahkan kembali tugas pengunduhan di objek NSURLSession, itu pun gagal sampai saya menutup aplikasi dari latar belakang dan membuka kembali aplikasi.
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" UserInfo={NSErrorFailingURLKey=https://ilmsdevqa.inspiredlms.com/Content/Organizations/1544/ScormCourses/offline/2970-offline.zip, NSErrorFailingURLStringKey=https://ilmsdevqa.inspiredlms.com/Content/Organizations/1544/ScormCourses/offline/2970-offline.zip}