iOS NSURLSession后台下载多个任务,支持断点续传

首先,一些简单的概念这里不多说,想要了解NSURLSession如何简单实现后台下载功能,可以百度会有很多基础的文章可供参考。我实现的功能类似于优酷里的视频下载,进到后台后可以一个接一个的下载,直到下载完成。1.创建NSURLSession创建不同identifier来区分不同的任务,我是根据视频ID来创建不同的任务。(我是在自己封装的下载类里创建下载会话,实现代理的,不是在A
摘要由CSDN通过智能技术生成

首先,一些简单的概念这里不多说,想要了解NSURLSession如何简单实现后台下载功能,可以百度会有很多基础的文章可供参考。

我实现的功能类似于优酷里的视频下载,进到后台后可以一个接一个的下载,直到下载完成。


1.创建NSURLSession

创建不同identifier来区分不同的任务,我是根据视频ID来创建不同的任务。(我是在自己封装的下载类里创建下载会话,实现代理的,不是在APPDelegate里)

/** DownloadTools.m **/
/**
 返回session
 
 @return session
 */
- (NSURLSession *)backgroundURLSession {
    NSURLSession *session = nil;
    NSString *identifier = [NSString stringWithFormat:@"ccpcm_%@",_currentFileModel.lessonId];
    //创建configuration
    NSURLSessionConfiguration* sessionConfig = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];
    //是否允许蜂窝访问
    sessionConfig.allowsCellularAccess = NO;
    //是否在后台启动app
    sessionConfig.sessionSendsLaunchEvents = YES;
    session = [NSURLSession sessionWithConfiguration:sessionConfig
                                            delegate:self
                                       delegateQueue:[NSOperationQueue mainQueue]];
    return session;
}

DownloadTools.m的下载入口,传进来URL进行下载。

#pragma mark - 创建网络请求会话和任务,并启动任务
-(void)creatDownloadSessionTaskWithURLString:(NSString*)urlString
{
    NSURL *url = [NSURL URLWithString:urlString];
    self.request = [NSURLRequest requestWithURL:url];
    self.session = [self backgroundURLSession];
    //这个_isFirst是判断是否自动调起下载功能,具体有什么用下文细说
    if (!_isFirst) {
        //loadResumeData:这个方法是把我之前存的resumeData从本地取出来,如果本地有,则继续下载,如果本地没有,则从头下载,进而实现断点续传。
        self.resumeData = [self loadResumeData:self.currentFileModel.lessonId];
        if (self.resumeData == nil) {
            self.downloadTask = [self.session downloadTaskWithRequest:self.request];
        } else {
            self.downloadTask = [self.session downloadTaskWithResumeData:self.resumeData];
        }
        [self.downloadTask resume];
    }
}

2.暂停下载


 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值