現在、アプリケーションから複数の画像をサーバーにアップロードするシステムを設計中です。ファイルはローカルデバイスに保存され、現在のアイデアは、それらをチャンクに分割してから、チャンクごとにサーバーにアップロードし、成功メッセージが返されるのを待ってから次のファイルをアップロードすることです。
このプロセスはユーザーにとってシームレスである必要があります。ユーザーはボタンを押してすべての画像を送信し、アプリケーションを閉じてバックグラウンドで続行できるようにする必要があります。iOS 7 では、アップロードを新しい NSURLSession API に渡し、アプリケーションから独立してアップロード タスクを処理できることがわかりました。
この転送の信頼性を誰かが知っているかどうか疑問に思っていました。画像全体を渡した場合、インターネット接続が途中で切れるとどうなりますか? バックグラウンド転送サービスは後で再試行しますか? 画像をアップロードでき、途中で失敗した場合は、後で接続が再開されたときにその時点から続行できるという考えです。
私たちが持っていたアイデアの 1 つは、ファイルをチャンクに分割し、すべてのチャンクを個別の NSURLSessionUploadTasks として渡し、最終的にすべてがサーバーに送信されると想定することでした。
もう1つは、次を使用して最初のチャンクを送信することでした:
uploadTaskWithRequest:fromData:completionHandler:
そして、completionHandler で次のチャンクを送信します。これに関する私の問題は、バックグラウンドで次のチャンクが
@property BOOL discretionary = true
これは、接続されている場合にのみ WiFi 経由で送信することを意味します。すべてのネットワークで動作し、中断に対処できるようにするために、これが必要です。
コードは必要ありません。これがこれを達成するための正しい方法であるかどうかについてのアドバイスだけです。