我有一个使用新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.
错误发生在这里,blob 在哪里并且resumeData
是一个实例:NSData
session
NSURLSession
if (resumeData) {
downloadTask = [session downloadTaskWithResumeData:resumeData];
...
数据由 Apple API 提供,经过序列化,然后在稍后的时间点反序列化。它可能已损坏,但永远不会为零(如 if 语句检查)。
如何提前检查resumeData
无效,以免应用程序崩溃?