LoginSignup
5
3

More than 5 years have passed since last update.

iOS11でダウンロードを再開するとファイルが破損する

Last updated at Posted at 2017-10-06

今回、開発を行ったアプリをswift2.3からswift4へアップデートする作業を行いました。
このアプリでは、ダウンロード最中にアプリを落としたら次に起動したときに、次の起動時に途中からダウンロードを再開するという機能があります。
その機能のテスト中に、発見したので紹介します。

ダウンロードを再開するための方法

アプリが落ちるタイミングでNSURLSessionDownloadTaskのcancelByProducingResumeDataを呼び出すことでplistファイルが取得できるので、これを保存します。このplistはダウンロード途中のファイルではなく、ダウンロード途中のファイルのパスやNSURLRequest、ファイルサイズ等のデータを持っています。
アプリが起動されたらこのファイルをdownloadTaskWithResumeDataの引数に使うことで、ダウンロードが途中から再開されます。

iOS11でダウンロードを再開するとファイルが破損する

バグってます。
iOS10のときもplistのデータが壊れていたので、OSがメジャーアップデートされた際は今後も気をつける必要がありそうです。

対応

フォーラムのコメントに従って
plistから「NSURLSessionResumeByteRange」を消すだけで、正常にダウンロードできました。
理由はわかりません...。

参考サイト

developer forum

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3