当我通过按power按钮强制设备进入睡眠模式时,我的后台任务通过调用带有错误的委托方法didCompleteWithError而停止:
手术无法完成。不允许操作
如何将我的NSURLSession配置为即使在睡眠模式下也可以继续下载?
有可能吗?如果没有,我有什么选择?我需要下载一个300 in的文件,所以在下载结束之前,应用程序将进入睡眠模式。
这是我的会议的创举:
static NSURLSession *backgroundSession;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
backgroundSession = [NSURLSession sessionWithConfiguration:
[NSURLSessionConfiguration backgroundSessionConfiguration:
@"com.myapp.mytask"] delegate:self.
myDelegate delegateQueue:self.myQueue];
});
NSURLSessionDownloadTask *task = [backgroundSession downloadTaskWithRequest:
self.urlRequest];
[task resume];发布于 2014-09-11 14:11:50
问题是数据保护功能被激活。启用该功能后,所有文件默认都是用NSFileProtectionComplete存储的,即使是NSURLSession用来下载的临时文件也是如此。
默认的保护级别是完全保护,在这种保护中,当设备被锁定时,文件是加密和不可访问的。您可以通过编程方式设置应用程序创建的文件的保护级别,如iOS应用程序编程指南中的“使用磁盘加密保护数据”中所描述的那样。
在该文件上激活NSFileProtectionComplete后,当设备被锁定时,您无法访问它。
我不确定临时下载文件是否可以配置为不使用数据保护,这似乎没有被NSURLSession公开。
https://stackoverflow.com/questions/25787822
复制相似问题