2017-01-11 16 views
1

私のアプリをデバッグする奇妙な動作が発生しています。次のようにシミュレータのios 8.1とios 10.2のバックグラウンドURLSessionとの奇妙な違いは何ですか?

 let backgroundSessionConfiguration = URLSessionConfiguration.background(withIdentifier: (prefix + postfix)) 
     let backgroundSession = Foundation.URLSession(configuration: backgroundSessionConfiguration, delegate: self, delegateQueue: OperationQueue.main) 

     progressView.setProgress(0.0, animated: false) 

     var request = URLRequest(url: dlUrl) 
     request.httpMethod = "GET" 
     request.cachePolicy = NSMutableURLRequest.CachePolicy.reloadIgnoringCacheData 

     let task = backgroundSession.downloadTask(with: request) 

     task.resume() 

私のテストイスト:アプリで

  1. 開始のダウンロードを

    は、私はまっすぐ進む背景に構成されたURLSessionを持っています。
  2. アプリをバックグラウンドに移動します。
  3. は、バックグラウンドのダウンロードが完了したときに通知します。
  4. 通知アプリをクリックすると、私はIOS 10.2下シミュレータでこれをしようとするとアプリがステップ2の後にダウンロードを一時停止し、ダウンロードが完了しない

を前面に来た後 - それ以上のエラーはありませんメッセージや警告が表示されます。アプリケーションをフォアグラウンドに持っていくと、ダウンロードが再開して終了します。

しかし、私がシミュレータで同じことを試してみると、ios 8.1はすべて正常に動作します。今

そして、最高の一部:予想通り10.2すべてがまた作品IOSとデバイスで

、今の質問は、シミュレータ上で、なぜないのですか?それはシミュレータで適用されるいくつかのリソース制限のためでしょうか?

答えて

1

10.2シミュレータでバグが見つかったようです。それは驚くべきことではない。シミュレータは実際にOS Xのフレームワークの上に書かれていて、iOSのように動作させるためのグルーコードがあります。

OSXまたはiOSデバイスのカスタムハードウェアとやり取りするシミュレータの部分で問題が発生していることがわかりました。

ファイルシステムにはさまざまな矛盾があり、GPSやacellerometerなどは完全にサポートされていません。

シミュレータがバックグラウンドのNSURLSessionの処理を正しく行えないことは驚くことではありません。アプリの外からのファイルのダウンロードを管理し、完了時にアプリを再起動するには、低レベルのタスクスケジューリングと対話する必要があります。

アップルにレーダーバグを提出することをお勧めします。

+0

説明のためにDuncan Cさんに感謝します。誰かが同じ問題を経験するならば、私は好奇心が強いでしょう... –

関連する問題