2017-02-17 7 views
5

NSURLSessionでマルチパートフォームデータを使用してファイルをサーバーにアップロードしています。アプリケーションがバックグラウンドで実行されると、アプリケーションがフォアグラウンドに再び入ったときに要求を中断し、再開したいと考えています。だから私は単に[session suspend][session resume]をします。これは、アプリがバックグラウンドでのみ動作しているときにうまくいきます。しかし、デバイスがロックされ、フォアグラウンドに戻り、再開しようとすると、ネットワーク接続が失われるというエラーが発生します。私は、デバイスがロックされていると、開いているソケットはすべて閉じられているので問題はありますが、最初からアップロードを開始する必要はありません。NSUrlSessionはデバイスロックの問題を中断し、再開します

答えて

2

アプリがバックグラウンドに移行する前にフォアグラウンドセッションをバックグラウンドセッションに切り替える必要があります。その後、アプリケーションを中断する必要はありません。あなたのファイルは、バックグラウンド(最終的には)中にOSによってアップロードされます。

+0

これは、バックグラウンドNSUrlSessionがファイルから直接アップロードする必要があることですが、マルチパートフォームデータを使用しているため、一時停止/再開する必要があります。 –

+1

ファイルに保存しますか? :D –

+0

問題はクライアントではなくサーバーの制約です。 –

0

残念ながら、documentationによれば、ファイルを使用してバックグラウンドアップロードを実行する必要があります。 「バックグラウンド転送の考慮事項」から

のみファイルからタスクをアップロードがサポートされている(データオブジェクトからアップロードまたはストリームは、プログラムが終了した後に失敗します)。

(これに加えて、アプリがいつ終了するかについての保証はありません。デバイスのロックだけでは十分ではありません。アプリが終了する可能性があります)。

関連する問題