小编Ale*_*nov的帖子

在iOS10上恢复NSUrlSession

iOS 10将很快发布,因此值得测试应用程序与它的兼容性.在此类测试期间,我们发现我们的应用程序无法在iOS10上恢复后台下载.在以前的版本上运行良好的代码在模拟器和设备上都不适用于新版本.

我没有将我们的代码减少到最小的工作测试用例,而是在互联网上搜索NSUrlSession教程并测试它们.行为是相同的:恢复工作在iOS的previos版本,但在10日休息.

重现步骤:

  1. 下载项目表单NSUrlSession教程 https://www.raywenderlich.com/110458/nsurlsession-tutorial-getting-started
  2. 直接链接:http: //www.raywenderlich.com/wp-content/uploads/2016/01/HalfTunes-Final.zip
  3. 构建它并在iOS 10下启动.搜索一些内容,例如"swift".开始下载,然后点击"暂停"然后"恢复"

预期成绩:

下载恢复.您可以查看iOS10之前版本的工作原理.

实际结果:

下载失败.在xcode控制台中,您可以看到:

2016-09-02 16:11:24.913 HalfTunes[35205:2279228] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2016-09-02 16:11:24.913 HalfTunes[35205:2279228] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2016-09-02 16:11:24.913 HalfTunes[35205:2279228] Invalid resume data for background download. Background downloads must use http or https and must download to an accessible file.
Run Code Online (Sandbox Code Playgroud)

更多场景:

如果您在下载文件时激活离线模式,则可以获得

Url session completed with error: Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSLocalizedDescription=unsupported URL} {
    NSLocalizedDescription = "unsupported URL";
}
Run Code Online (Sandbox Code Playgroud)

当网络关闭时,下载永远不会在网络再次启动时恢复.暂停的其他用例(例如重新启动)也不起作用.

补充调查:

我试图使用建议的代码检查返回的resumeData是否有效 …

ios nsurlsession nsurlsessiondownloadtask ios10

35
推荐指数
2
解决办法
1万
查看次数