NSURLSessionDownloadTask文件下载

    xiaoxiao2021-04-13  32

     

    本文内容大纲:

    1、回顾NSURLSessionTask

    2、NSURLSessionDownloadTask大文件之block下载

    3、NSURLSessionDownloadTask大文件之代理方法下载

    4、NSURLSessionDownloadTask大文件之代理方法实现断点续传下载

     

    前言:如果读者是第一次阅读或者是学习关于本篇要介绍的NSURLSession的知识,最好先阅读本人前篇《iOS开发之网络编程--1、NSURLSession的基本使用》然后再学习本篇比较好。

     

    1、回顾NSURLSessionTask:

    使用NSURLSession就需要用到NSURLSessionTask,所以关于Task的类和其子类的关系还是要了解的:

        

    本篇讲解的是大文件下载,既然是"下载",所以自然要用到的是NSURLSessionDownloadTask。

     

    2、NSURLSessionDownloadTask大文件之block下载

    测试的API接口:http://120.25.226.186:32812/resources/images/minion_08.png (因为Block的缺点,所以这里用并不打的图片文件作为测试)

      2-1、类、方法、属性介绍:

        NSURLSession

          +(NSURLSession*)sharedSession;                        单例,直接创建会话session对象

          - (NSURLsessionDownloadTask*)downloadTaskWithURL:completionHandler:; 根据URL来创建会话的下载任务downloadTask,完成的话回调block

        NSURLsessionDownloadTas

          - (void)resume;                                启动并执行任务

     

      2-2、源码展示:

                

      2-3、缺点

          Block下载方式不适合大文件下载,因为该方法需要等到文件下载完毕了,才会回调completionHandler后面的block参数,然后才可以在这个block参数可以

        获取location(文件下载缓存的路径)、response(响应)、error(错误信息)。

          这样的话,对于大文件,我们就无法实时的在下载过程中获取文件的下载进度了。

     

    3、NSURLSessionDownloadTask大文件之代理方法下载

    测试的API接口:http://120.25.226.186:32812/resources/videos/minion_02.mp4  (这回用的是大文件哦,但也不会太大,本篇基础练习用,不会让你下载都要花个好几十分钟以上的时间

    转载请注明原文地址: https://ju.6miu.com/read-668822.html

    最新回复(0)