新しいiOS7 API(NSURLSession)でバックグラウンドダウンロードに関するAppleのドキュメントを読んだ後、少し失望しています。私はAppleがバックグラウンドでネットワークの可用性を一時停止/再開を管理していたことを確認した(あるいはそうするためのオプションを提供)が、無...NSURLSession background download - ネットワーク障害で再開
だから、これは我々が持っているもので、ドキュメントを読ん:
When any task completes, the NSURLSession object calls the delegate’s URLSession:task:didCompleteWithError: method with either an error object, or nil if the task completed successfully. If the task is a resumable download task, the NSError object’s userInfo dictionary contains a value for the NSURLSessionDownloadTaskResumeData key. Your app should use reachability APIs to determine when to retry, and should then call downloadTaskWithResumeData: or downloadTaskWithResumeData:completionHandler: to create a new download task to continue that download. Go to step 3 (creating and resuming task objects).
は、これまでのところ私は解決策を理解し、私の質問は:ネットワークの損失を処理し、バックグラウンドでダウンロードを再開するのが最適です何アーキテクチャ?
私の側では、到達可能性を使用しており、ネットワークが利用可能になるたびに、ネットワークを失ったときにすべてのタスク(作成時にNSArrayで参照されます)を再開します。これは、フォアグラウンドで正常に機能しますが、バックグラウンドのために、私は以下の点に役立つ必要があります:私のアプリがフォアグラウンドには接続していない場合は
、私は接続せずに、バックグラウンドに行けばすべての私の作業中断としませんままにネットワークが利用可能な場合は戻ってきました...
バックグラウンドでネットワークが失われると、すべてのダウンロード/タスクが停止します。 シナリオ:フォアグラウンドで
- 、私は私がバックグラウンドに行くと10Sは、「aireplanモード」
- に切り替えた後ですべての私のタスクはエラーを得た私のタスク
- のダウンロードを開始します。だからメソッドURLSessionで:タスク:didCompleteWithError: downloadTaskWithResumeDataを使用して再開しますか(できない場合はいくつかが 十分なレジュームデータを持っていないため)私はそれを再開せずに新しいタスクを作成しています当時)。
- は、それから私は、私はこれらの点に対処するにはどうすればよい...私は、バックグラウンドでまだだように、ネットワーク、アプリケーションを起動せずに帰ってきたとき、私は「再開」をトリガーすることができません
を無線LANを設置しました?私は何かを逃したか?
私はあなたの失望を共有します。あなたはこれについてAppleからの答えを待っていると言います。あなたは彼らから聞いたことがありますか?解決策とは何ですか? – gavdotnet
アップルとの交換は多かったが生産的ではなかったため、これらのケースを世話するべき裁量旗を使用することが推奨される。このモードは私の目標ではありませんでしたが、私はこれにほとんど焦点を当てませんでしたが、私のテストは成功しませんでした。この部分についてテストしたことがあれば、まだ情報を得るのは興味深いでしょう。 – Gros