0

AFHTTPSessionManager を基本クラスとして使用して、アプリのネットワーク コードを AFNetworking 2.0 に書き直しています。現在のダウンロードの実装を再実装したいのですが、古い動作の再実装に失敗しています。

現在の実装:

  • ファイルを tmp フォルダーにダウンロードする
  • ダウンロードが成功した場合、ファイルを宛先パスに移動します
  • ダウンロードが失敗/キャンセルされた場合、ダウンロードしたデータを tmp フォルダーに残す
  • ユーザーがダウンロードを再開する (再度ダウンロードを開始する) 場合は、tmp フォルダーを確認し、最後のダウンロードが終了した位置からダウンロードを再開します。

現在のアプローチ:

ダウンロードを開始するには、AFURLSessionManager メソッドを使用しますdownloadTaskWithRequest:progress:destination:completionHandler:。ダウンロードが完了すると、destination と completionHandler ブロックが呼び出され、すべて問題ありません。しかし、タスクのみをキャンセルすると、completionHandler ブロックが呼び出され、既にダウンロードされたファイルの位置を見つけることができません。これは、正しい位置でダウンロードを再開するために必要です。ダウンロードを再開するには、downloadTaskWithResumeData:progress:destination:completionHandler:メソッドを使用します。しかし、既にダウンロードされたデータを取得するには、tmp ダウンロード ファイルのパスが必要です。

質問: 終了したダウンロード ファイルのパスを取得するにはどうすればよいですか? または、すべてのデータを再度ダウンロードせずに、このダウンロードを再開するにはどうすればよいですか?

4

1 に答える 1

0

NSURLSessionDownloadTaskには方法cancelByProducingResumeData:があります。これにより、ダウンロードを再開するために必要な再開データ オブジェクトが提供されます。

この履歴書データをファイルに保存して、後で で再開することができますdownloadTaskWithResumeData:progress:destination:completionHandler

于 2015-11-09T11:49:06.267 に答える