これは、継続ブロックを使用して行うことができます。アップロードごとに、失敗したアップロードのケースで再試行戦略を定義することができます。例えば:
[[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) {
if (task.error){
// Handle failed upload here
}
if (task.result) {
//File uploaded successfully.
}
return nil;
}];
のためにあなたはまた、タスクのリストを作成し、これは、リスト内のすべてのタスクを実行してから再試行することができ、エラーのあなたのリストが表示されます
NSMutableArray *tasks = [NSMutableArray new];
AWSTask * taskForUpload = [transferManager upload:uploadRequest];
[tasks addObject:taskForUpload];
// add more tasks as required
[[AWSTask taskForCompletionOfAllTasks:tasks] continueWithBlock:^id(AWSTask *task) {
if (task.error != nil) {
// Handler error/failed uploads here
} else {
// Handle successful uploads here
}
return nil;
}];
を使用することができます。
おかげで、 ローハン
ありがとうございますが、私の使用事例では、あとでアップロード日を再開する必要があるかもしれません。その間、アプリは強制終了され、再開されました。ですから、私はその意味でより信頼できるものを望みます。 – Kamchatka
申し訳ありませんが、その特定の用途は転送ユーティリティによって直接サポートされていません。ユースケースを実現するには、アプリ側にカスタムロジックをコーディングする必要があります。 –
OK、ありがとう@ロハン。オブジェクトにMD5メタデータを追加し、MD5を計算し、HEADをチェックして、MD5がアップロードを決定する前に同じかどうかを確認します。私はまだヘッド要求のバグを持っている - 私は思う - それはエラーを正しく返していない(http://stackoverflow.com/questions/41197569/aws-s3-head-request-not-returning-404- when-file-doesnt-exist-exist)です。 – Kamchatka