iOS – 后台会话不支持完成处理程序块。 代之以使用委托
我使用后台代码进行networking活动。 但是,我遇到了下面的崩溃日志错误。
完成处理程序块在后台会话中不受支持。 代之以使用委托。
请提供解决此问题的指针。
NSURLSessionConfiguration* config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier]; config.sessionSendsLaunchEvents = YES; config.allowsCellularAccess = YES; config.discretionary = YES; NSURLSession* session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil]; NSURLSessionDownloadTask* downloadTask = [session downloadTaskWithRequest:request]; [downloadTask resume];
崩溃日志
0 CoreFoundation __exceptionPreprocess + 120 1 libobjc.A.dylib objc_exception_throw + 52 2 CFNetwork -[__NSURLBackgroundSession validateSerializabilityForRequest:completion:] + 196 3 CFNetwork -[__NSURLBackgroundSession _onqueue_downloadTaskForRequest:resumeData:completion:] + 48 4 CFNetwork __90-[__NSURLBackgroundSession downloadTaskForRequest:downloadFilePath:resumeData:completion:]_block_invoke + 32 5 CFNetwork __68-[__NSURLBackgroundSession performBlockOnQueueAndRethrowExceptions:]_block_invoke + 72 6 libdispatch.dylib _dispatch_client_callout + 12 7 libdispatch.dylib _dispatch_barrier_sync_f_invoke + 80 8 CFNetwork -[__NSURLBackgroundSession performBlockOnQueueAndRethrowExceptions:] + 148 9 CFNetwork -[__NSURLBackgroundSession downloadTaskForRequest:downloadFilePath:resumeData:completion:] + 188 ! 10 -[CRNSURLSessionTaskProxy initDownloadTaskWithSession:request:completionHandler:dispatch:] + 152 11 -[CRNSURLSessionProxy downloadTaskWithRequest:completionHandler:] + 108 12 -[CRNSURLSessionProxy downloadTaskWithRequest:] + 20
你需要在你的downloadTask中添加一个委托,然后实现这里描述的委托方法: link
这里也是很好的教程: 链接
- 我的应用程序崩溃,因为我的精灵套件游戏中未完成的声音
- 应用渐变到UIImage – 如何去除颜色反转?
- iOS NSURLSession,如何在didCompleteWithError中重试
- 如何在圆圈内使用UIVisualEffectView
- 在swift中将用户input转换为Ints数组
- 将DuckHunt与ARKit结合使用? —第1课:欢迎来到组件世界
- 如何修复无法获取平台cordova-ios@~4.4.0
- dyld:未find符号:___NSDictionary0__在XCode 7和iOS目标9.0中使用带有发现文档的Google ServiceGenerator二进制文件
- 当tableview滚动时计数值被改变