シナリオ:
ユーザーとして、アプリのドキュメント フォルダーに保存されている写真やビデオを (無制限に) 撮影できます。これらの各メディア ファイルは、追加情報 (キャプションなど) を含む Sqlite データベース内のレコードを取得します。これはすべて完全にオフラインで行うことができます。
オンラインに戻ると、撮影したすべてのビデオと写真のリストと、アップロード プロセスを開始するボタンが表示されたダイアログが表示されます。
各ファイルは、サーバーに対してマルチパート POST 要求を行うことにより、そのメタデータと共に次々とアップロードされます。サーバーの応答は、メタデータとともに Sqlite データベースに保存されます (そのため、失敗して忘れることはありません)。
信頼できるソリューション?
このチャートを正しく読んで理解している場合、最も簡単な解決策は、これらのアップロードのそれぞれをタスク内にラップすることです。副作用: 10 分後にすべてのタスクがキャンセルされ、接続が遅いか非常に大きなファイル (非常に長いビデオなど) が問題になります。
推奨される方法は、NSUrlSession/Background 転送サービスを使用することです。
それは私の質問に私を導きます:
マルチパート POST を NSURLSessionDataTasks でラップすることは可能ですか?タスクが 10 分以上実行されている場合や、ユーザーがアプリを一時停止している場合でも、これは信頼できますか?
私は Xamarin/C# 派なので、Objective-C であっても、マルチパート アップロードのサンプル スニペットをいくつか提供していただければ幸いです ;-)。