iOS Background FETCH n Background TRANSFER を使用してアプリを更新します。
大量のファイルの大規模なダウンロードの一部として MP4 をダウンロードすると、ダウンロードが突然停止してエラーが発生することがあります。
「クライアントは応答全体を受信する前に接続を閉じました」
httpコードはまだ200です。
企業の携帯電話アカウントのためにデータに制限がなく、iPad に単一のアプリがあるため、管理者は、クリーン インストールで 20/30 を超える大量のデータとファイル数をダウンロードすることを望んでいます。それらは、毎日発行される企業のビデオ/ PDF です。
NSURLSession を作成しました
NSURLSession * backgroundSession_ = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier]
次に、mp4 または PDF への URL ごとに、NSURLSession から NSURLSessionDownloadTask を作成します。
NSURLSessionDownloadTask * downloadTask_ = [backgroundSession_ downloadTaskWithURL:url_];
各ダウンロード タスクで起動を再開します。すべてが返されたら NSURLSession が完了し、アプリが更新されたことを通知でユーザーに伝えます。
Mac で CHARLES PROXY を使用してダウンロードを監視しています。多くのファイルがあるため、しばらく時間がかかります。また、映画がストリーミングされているように見えるため、遅くなる可能性があることに気付きました. 通常、ダウンロードされたものをチェックし、最新のもののみをダウンロードしますが、多くのダウンロードを行うと、クリーン インストールと言うと、mp4 へのストリームが頻繁に停止することに気付きました。彼らは200コードを持っていますが、メッセージがあります
「クライアントは応答全体を受信する前に接続を閉じました」
NSURLSession の完了が停止し、同期が一種のハング状態になる可能性があるため、これを引き起こす可能性のある考えはありません。
画像: OK ダウンロード: ムービー ストリームとディスクに保存: 200: 完了
画像: ダウンロードが突然停止する:
任意のアイデア: 私はバックグラウンド フェッチを使用しているため、メッセージ内のクライアントが iOS8 なのか私のアプリなのかわかりません。各 downloadtask が返された後、ドキュメントで tmp ファイルを mp4 にコピーして呼び出します
[session finishTasksAndInvalidate];
これらのダウンロード タスクの一部が失敗すると、セッションが終了せず、スタックすることに気付きます。別のフェッチを行うと、これらの古いダウンロード タスクと古いセッションがすべて取得されます。