AFHTTPSessionManager を基本クラスとして使用して、アプリのネットワーク コードを AFNetworking 2.0 に書き直しています。現在のダウンロードの実装を再実装したいのですが、古い動作の再実装に失敗しています。
現在の実装:
- ファイルを tmp フォルダーにダウンロードする
- ダウンロードが成功した場合、ファイルを宛先パスに移動します
- ダウンロードが失敗/キャンセルされた場合、ダウンロードしたデータを tmp フォルダーに残す
- ユーザーがダウンロードを再開する (再度ダウンロードを開始する) 場合は、tmp フォルダーを確認し、最後のダウンロードが終了した位置からダウンロードを再開します。
現在のアプローチ:
ダウンロードを開始するには、AFURLSessionManager メソッドを使用しますdownloadTaskWithRequest:progress:destination:completionHandler:
。ダウンロードが完了すると、destination と completionHandler ブロックが呼び出され、すべて問題ありません。しかし、タスクのみをキャンセルすると、completionHandler ブロックが呼び出され、既にダウンロードされたファイルの位置を見つけることができません。これは、正しい位置でダウンロードを再開するために必要です。ダウンロードを再開するには、downloadTaskWithResumeData:progress:destination:completionHandler:
メソッドを使用します。しかし、既にダウンロードされたデータを取得するには、tmp ダウンロード ファイルのパスが必要です。
質問: 終了したダウンロード ファイルのパスを取得するにはどうすればよいですか? または、すべてのデータを再度ダウンロードせずに、このダウンロードを再開するにはどうすればよいですか?