2016-12-16 4 views
1

次のコードでネットワークアクティビティのバックグラウンドセッションを使用します。しかし、以下のクラッシュログでエラーが発生しました。iOS - 完了ハンドラブロックは、バックグラウンドセッションではサポートされていません。デリゲートを代わりに使用する

完了ハンドラブロックは、バックグラウンドセッションではサポートされません。 代わりに代理人を使用してください。

この問題を解決するためのポインタを提供してください。

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 にデリゲートを追加する必要が

答えて

1

:ここ もlink

良いチュートリアル:link

関連する問題