如何在延迟后恢复下载任务?
我看了一下这个帖子:
iOS NSURLSession, how to retry in didCompleteWithError
Rob建议的第三种方法是我正在尝试做的,但我不知道如何设置延迟。
到目前为止,我有这样的事情:
-(void)URLSession:(NSURLSession*)session task:(NSURLSessionTask*)task didCompleteWithError:(NSError*)error {
if ( error == nil )
return;
NSData* resume_data = error.userInfo[NSURLSessionDownloadTaskResumeData];
NSURLSessionDownloadTask* new_task = [_session downloadTaskWithResumeData:resume_data];
[new_task resume];
}
我想等10秒钟(比如说)然后恢复。
答案 0 :(得分:2)
延迟后你不应该恢复它。如果没有网络连接,这将导致您的应用使用大量资源。
相反,请使用reachability确定何时再次尝试。从原始URL为确切的主机创建可访问性对象,当该可访问性对象显示主机可访问时,请重试该请求。
答案 1 :(得分:1)
如果[new_task resume]
有效,那么:
[new_task performSelector:@selector(resume) withObject:nil afterDelay:10.0]