美文网首页iOS开发iOS开发经验总结network
iOS 支持多任务、断点下载(图片、音频、视频)

iOS 支持多任务、断点下载(图片、音频、视频)

作者: 汉斯哈哈哈 | 来源:发表于2015-08-10 19:32 被阅读4042次

    项目中经常涉及下载功能,如视频、音乐或图片,所以就封装了个工具类,支持多任务、断点下载
    欢迎大神指点!

    具体使用和代码: https://github.com/HHuiHao/HSDownloadManager

    功能演示:

    这里写图片描述

    文章同步到微信公众号:hans_iOS 有疑问可以在公众号里直接发

    相关文章

      网友评论

      • 90后的晨仔:你好如果要是使用post请求下载zip文件,参照你这个改动大吗?有哪些地方是需要注意的:blush:
      • PGOne爱吃饺子:你好,支持后台下载么
      • 心语风尚:didReceiveResponse 是首次用新的URL下载相应调用 如果暂停 然后继续下同一个url这个方法会再次调用吗 是同一个url 暂停再继续
      • 60a18ece98ee:你好,暂停后等一会在点击开始就不能下载了,走的didCompleteWithError,怎么让它继续下载?
        夏天的风_song:暂停用suspend,重启用resume
      • S型身材的猪:整体封装的还算可以,不过还是有很多缺陷。在获取进度值的时候,CGFloat progress = 1.0 * receivedSize / expectedSize;没有判断expectedSize是不是为0,如果为0的话程序会崩溃,这就是我一运行程序然后清空发生崩溃的原因。
        最重要的是,接口没提供好,我给点建议:
        进度 block不应该返回receivedSize、expectedSize、progress三个值,返回NSProgress类型的 progress会更好,如同AFN一样。NSProgress就像一个模型,可以把receivedSize、expectedSize分别赋值给 NSProgress的completedUnitCount和totalUnitCount属性。
        完成 block应该返回文件存储路径和错误信息给开发者,而不是返回一个状态state,状态完全可以由开发者自己判断。
      • d5238900c285:正好最近需要学习这方面,拿去研究啦,谢谢卤煮大大 :) ~
      • UILabelkell:大神 你这个 如果我下载了 怎么获取 文件呀 是还是还要在转换一下 才能得到文件名 :smiley:
        05153f232f1d:还有个问题 沙盒路径会变
      • UILabelkell:刚刚我用了下你的这个dome 发现 就是下的哪个视频文件播放 不了 但是我直接用af 下的哪个文件能播放 你的这个放 还要什么转码。 还有md5String 这个转换成 md5 文件名 一定要这么处理吗?
        饥人谷_张炜:@flg_ios 你好 问下为什么不用这个MD5String转换就下载不下了?
        05153f232f1d:// 文件的存放路径(caches)
        #define HSFileFullpath(url) [HSCachesDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4",HSFileName(url)]]
        在这里拼接一个MP4就好了
      • 巴图鲁:膜拜
      • 潇湘wei雨:还有就是 “- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSHTTPURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler”
        这个方法中,“(NSHTTPURLResponse *)response”是不是作者人为改的,因为原方法是“(NSURLResponse *)response”,请问如果不这么改会怎么样
        汉斯哈哈哈:@潇湘wei雨 NSHTTPURLResponse 是 NSURLResponse 子类
      • 潇湘wei雨:请问,为什么要由self.tasks 和 self.sessionModel两套数据源,一直没有搞懂
        潇湘wei雨:@汉斯哈哈哈 多谢!这份代码看了很多遍,每一次都有更好的理解
        汉斯哈哈哈:@潇湘wei雨 tasks里面保存正在执行的任务,sessionModels里管理下载的相关信息
      • 2b0ea55e055e:你好,如果我要自定义视频路径和视频下载后的名称,要怎么整
      • ducks:按下暂停才写入本地数据。如果直接退出了。所以 应该实时写入是吧 。我最近要做这功能
        汉斯哈哈哈:@shunl 没封装完善,仅提供个思路,具体可以自己改
      • Theyouth:保存
      • 天蝎座沫沫:谢谢分享,请问如何获得下载文件的路径实现本地视频播放功能

      本文标题:iOS 支持多任务、断点下载(图片、音频、视频)

      本文链接:https://www.haomeiwen.com/subject/qvjiqttx.html