cuốn sách gpt4 ai đã làm

ios - Chuyển từ NSURLSession nền trước sang NSURLSession nền - Xử lý các tác vụ trong quá trình

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 22:59:11 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi đang cố gắng xử lý đúng cách NSURLSessionTasks trong quá trình nếu ứng dụng chạy ở chế độ nền (ví dụ: khi nhấn nút trang chủ). Tôi hiện đang thực hiện phương pháp sao chép tác vụ từ quy trình sang hàng đợi nền (xem mã bên dưới). Tuy nhiên, tôi nhận thấy rằng các tác vụ nền hoạt động thất thường và không phải lúc nào cũng hoàn thành. Có ai có thể phát hiện ra điều tôi có thể đang làm sai/đề xuất cách tiếp cận tốt nhất không?

- (void)appWillResignActive : (NSNotification *)notification {
UIApplication *app = [UIApplication chia sẻỨng dụng];

// Đăng ký tác vụ nền thú vị
__block UIBackgroundTaskIdentifier bgTaskId =
[ứng dụng BeginBackgroundTaskWithExpirationHandler:^{
bgTaskId = UIBackgroundTaskInvalid;
}];

[tự switchToBackground];
[ứng dụng endBackgroundTask:bgTaskId];

}

- (void)appWillBecomeActive : (NSNotification *)notification {
[tự switchToForeground];
}

- (void)switchToBackground
{
NSLog(@"Chuyển sang dòng nền 217 Network Manager");
if ([trạng thái isEqualToString: kdownloadManagerStateForeground]) {
[urlSession getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
cho (NSURLSessionDownloadTask *downloadTask trong downloadTasks) {
[downloadTask cancelByProducingResumeData:^(NSData *resumeData) {
NSURLSessionDownloadTask *downloadTask = [self.backgroundSession downloadTaskWithResumeData:resumeData];
[downloadTask resume];
}];
}
}];

trạng thái = kdownloadManagerStateBackground;
}
}

- (void)switchToForeground
{
if ([trạng thái isEqualToString: kdownloadManagerStateBackground]) {
[backgroundSession getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
cho (NSURLSessionDownloadTask *downloadTask trong downloadTasks) {
[downloadTask cancelByProducingResumeData:^(NSData *resumeData) {
NSURLSessionDownloadTask *downloadTask = [self.urlSession downloadTaskWithResumeData:resumeData];
[downloadTask resume];
}];
}
}];

trạng thái = kdownloadManagerStateForeground;
}
}

câu trả lời hay nhất

Phiên nền cho phép bạn thực hiện tải lên và tải xuống nội dung trong nền trong khi ứng dụng của bạn không chạy. Bạn có thể tạo cấu hình phiên nền bằng cách gọi phương thức BackgroundSessionConfiguration: trên lớp NSURLSessionConfiguration.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
NSURLSessionConfiguration *sessionConfig;
thời gian chờ nổi = 5 * 60.0f;

BOOL iOS8OrNew = [[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0;
nếu (iOS8OrNew) {
sessionConfig = [NSURLSessionConfiguration nềnSessionConfigurationWithIdentifier:identifier];
request.timeoutInterval = hết thời gian chờ;
}
khác {
sessionConfig = [NSURLSessionConfiguration nềnSessionConfiguration:identifier];
sessionConfig.timeoutIntervalForRequest = hết thời gian chờ;
}

sessionConfig.HTTPMaximumConnectionsPerHost = 10;
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:sessionConfig];

NSURLSessionDownloadTask *downloadTask = [người quản lý downloadTaskWithRequest:request];


[người quản lý setDidFinishEventsForBackgroundURLSessionBlock:^(NSURLSession * _Nonnull session) {
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] đại biểu];
if (appDelegate.backgroundSessionCompletionHandler) {
void (^completionHandler)() = appDelegate.backgroundSessionCompletionHandler;
appDelegate.backgroundSessionCompletionHandler = nil;
hoàn thànhHandler();
}
NSLog(@"Tất cả nhiệm vụ đã hoàn thành");
}];

Xem câu trả lời của tôi để biết thêm thông tin:Làm cách nào để tiếp tục tải xuống hình ảnh mới ở chế độ nền ngay cả khi lực lượng người dùng thoát khỏi ứng dụng trong mục tiêu iOS C?

Về ios - chuyển từ NSURLSession nền trước sang NSURLSession nền - xử lý các tác vụ đang được xử lý, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/38306102/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress