Tôi cần tải xuống với các khả năng nền nhất định (không phải tất cả), sau khi kiểm tra tiêu đề (cho chiều dài và loại), nhưng nó phải ở trong cùng một thao tác, chứ không phải tạo một nhiệm vụ/yêu cầu mới (vì đôi khi tôi gặp lỗi từ máy chủ do nhiều kết nối trong một khoảng thời gian ngắn). Vì vậy, tôi bắt đầu công tác:Chuyển đổi NSURLSessionDataTask thành tác vụ Tải xuống với hỗ trợ nền
NSURLSessionConfiguration *configuratione = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *sessione = [NSURLSession sessionWithConfiguration:configuratione delegate:self delegateQueue:nil];
NSURLSessionDataTask *datatask = [sessione dataTaskWithRequest:request];
[datatask resume];
Sau đó, tôi biết rằng có thể chuyển đổi một tác dữ liệu vào một nhiệm vụ Tải khi nhận được phản ứng đầu tiên, với đại biểu này:
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler
{
if(XXXXXXXXXX){
NSLog(@"transform into a download");
completionHandler(NSURLSessionResponseBecomeDownload);
}else{
NSLog(@"Keep loading normally");
completionHandler(NSURLSessionResponseAllow);
}
}
Tuy nhiên, kể từ Công việc dữ liệu không thể sử dụng BackgroundSessionConfiguration, tôi cho rằng tải xuống mới được tạo sẽ sử dụng cùng một Cấu hình phiên mặc định. Làm cách nào để giữ cho bản tải xuống đó chạy trong nền? Có cách nào thay đổi phiên của nó thành phiên bản nền không? Hoặc đó sẽ là cách tiếp cận?
nhưng giải pháp của bạn hoàn toàn khác với cấu hình nền, nơi tải xuống nằm trong quá trình được quản lý OS và nó sẽ tiếp tục ngay cả khi ứng dụng ở chế độ nền và bị hệ điều hành giết. –
Chúng ta có thể nói rằng nhiệm vụ tải xuống mạnh mẽ hơn nhiều so với tác vụ dữ liệu? Bởi vì nó cho phép ** (1) ** Tiếp tục tải xuống khi khởi chạy liên tục Ứng dụng. ** (2) ** Tiếp tục tải xuống ngay cả khi Ứng dụng không ở trạng thái hoạt động, hấp dẫn đối với người dùng. – NSPratik