NSURLSession
新しいAPIでバックグラウンド ダウンロードを使用するアプリがあります。提供されている方法でダウンロードがキャンセルまたは失敗した場合、NSURLSessionDownloadTaskResumeData
後で再開できるようにデータ BLOB を保存します。ごくわずかな時間ですが、実際にクラッシュしていることに気付きます:
Fatal Exception: NSInvalidArgumentException
Invalid resume data for background download. Background downloads must use http or https and must download to an accessible file.
ここでエラーが発生します。ここで、resumeData
はNSData
ブロブで、session
は のインスタンスですNSURLSession
。
if (resumeData) {
downloadTask = [session downloadTaskWithResumeData:resumeData];
...
データは Apple API によって提供され、シリアル化され、後で逆シリアル化されます。壊れているかもしれませんが、(if ステートメントがチェックするように) nil になることはありません。
resumeData
アプリがクラッシュしないように、 が無効であることを事前に確認するにはどうすればよいですか?