ฉันกำลังดาวน์โหลดไฟล์ในพื้นหลังโดยใช้การกำหนดค่าเซสชันพื้นหลัง 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];
}
}];
}
ตอนนี้ปัญหาคือหากกำลังดาวน์โหลดอยู่ และฉันปิดแอปพลิเคชันจากพื้นหลังโดยกดปุ่มโฮมสองครั้ง แล้วถ้าฉันเปิดแอปพลิเคชันอีกครั้ง จากนั้นการดาวน์โหลดทั้งหมดจะเริ่มล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดด้านล่าง ถ้าฉันเพิ่มงานดาวน์โหลดอีกครั้งในออบเจ็กต์ NSURLSession แม้ว่ามันจะล้มเหลวจนกว่าฉันจะปิดแอปพลิเคชันจากพื้นหลังและเปิดแอปพลิเคชันอีกครั้ง
- (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}