当我通过按电源按钮强制设备进入睡眠模式时,我的后台任务通过调用委托方法停止didCompleteWithError
出现错误:
操作无法完成。不允许操作
如何配置我的 NSURLSession 即使在睡眠模式下也能继续下载?
有可能吗?如果没有,我有什么选择?我需要下载一个 300Mb 的文件,因此在连接速度较低的情况下,应用程序将在下载结束之前进入睡眠模式。
这是我的会话的创建:
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];
问题是数据保护能力被激活。启用后,所有文件都存储为NSFileProtectionComplete
默认情况下,即使是用于下载的临时文件NSURLSession
:
默认的保护级别是完全保护,其中文件
当设备锁定时,它们会被加密且无法访问。你可以
以编程方式设置您创建的文件的保护级别
应用程序,如 iOS 中的“使用磁盘加密保护数据”中所述
应用程序编程指南。
With NSFileProtectionComplete
在该文件上激活,当设备锁定时您无法访问它。
我不确定临时下载文件是否可以配置为不使用数据保护,这似乎没有被暴露NSURLSession
.
Source: 应用分发指南
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)