2016-12-20 1 views
1

私は大量のデータを最初に起動するとき(1GBの画像あたり)のデータをダウンロードする必要があるアプリを開発しています。現在、私はライブラリMZDownloadManagerを使ってダウンロードを行っています。ライブラリはダウンロード用のバックグラウンドモードを実装しており、ターゲットの機能にも設定しています。基本的に私は、このシナリオがあります。コードのバックグラウンドダウンロードを実行するには?

  • は私が私が私が配列でダウンロードする画像のURLをすべて保存
  • コアデータ内のすべてのデータを保存
  • JSONを与えるAPIを呼び出すを
  • 私は私がすると、それ
  • 時に1つのアイテムをダウンロードダウンロードに
    • を開始
    • コアデータを保存EMが終了し、私は新しいダウンロード
  • すべてが完了すると、私はUIが
プログレスバーを非表示にするショーを開始コアデータ内のローカルパスを保存およびURL
  • の配列から削除します

    私は、ダウンロードが実行されている間、アプリをバックグラウンドに置く可能性をユーザーに与えたいと考えています。それは、シミュレータではうまく動作しますが、デバイスではうまく動作しません。私はSimulatorがMacの大量のメモリのために動くと思う。提案はありますか?

  • +0

    あなたがアプリをプロファイリングして見ることができます。それぞれのバックグラウンドコールでどれくらいの作業をすることができるかには限界があり、それが問題かもしれません。 Fyiにバグがある場合は、別のダウンロードマネージャがあります。 https://github.com/Gurpartap/Cheapjack – GregP

    答えて

    0

    NSURLSessionクラスはバックグラウンドファイルのダウンロードをサポートします。アプリが終了してもファイルをダウンロードし、必要に応じてダウンロードが完了したらバックグラウンドで再起動します。

    0

    背景のダウンロードをサポートするには、NSURLSessionオブジェクトを設定する必要があります。セッションを設定するには、まずNSURLSessionConfigurationオブジェクトを作成し、いくつかのプロパティを適切な値に設定する必要があります。その後、セッションを作成するときに、その構成オブジェクトを適切な初期化メソッドNSURLSessionに渡します。次のようにバックグラウンドダウンロードをサポートしている設定オブジェクトを作成するには

    は次のとおりです。

    • はまずbackgroundSessionConfigurationWithIdentifierを使用して設定オブジェクトを作成します。NSURLSessionConfigurationの方法を。
    • 設定オブジェクトのsessionSendsLaunchEventsdiscretionaryのような他のプロパティを適宜設定してください。
    • はあなたNSURLSessionオブジェクト

    例を作成するために、設定オブジェクトを使用します - それはあまりにも多くのCPUやメモリを使っている場合は

    let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("bgSessionConfiguration") 
        configuration.discretionary = true 
        configuration.allowsCellularAccess = true //default true 
        let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil) 
    
    関連する問題