HalfTunes 项目分析

简介:这是一个来自 NSURLSession教程中的示例应用程序,已经更新到了Swift 3。用户可以通过iTunes API查询歌曲,然后下载和播放歌曲片段。下载地址

类图(双击看原图)


应用主要涉及四个流程:

1,搜索:程序通过一个UISearchBar控件来接收用户的搜索请求。

URLSession: 这个类实现了下载功能,包括后台下载。支持多种协议,代理,还可以被扩展来支持用户的自定义协议。

DHURLSession 是一个protocol,DH是一个德国老哥的名字的缩写。这个protocol完全是为了测试而添加的,应用中并没有调用其中的方法。测试时使用一个实现了这个协议的mock对象,以用预存好的数据做为返回结果。

结果正确返回后,调用updateSearchResults显示搜索结果。updateSearchResults首先清理上次的搜索结果,然后用JSONSerialization来解析传入的Data。解析结束后重新加载显示列表。

用户的搜索请求需要重新编码来防止非法字符

UIApplication.shared.isNetworkActivityIndicatorVisible=true //显示网络活动提示,就是屏幕顶端显示在网络连接右侧的那个转圈的小东西。这个东西不是自动的,也就是说没有提示的时候也可能在有应用在访问网络。

2,下载:用户可以同时下载多个搜索结果的演示片段。

应用中有一个downloadsSession专门负责歌曲下载。每个URLSession可以创建多个URLSessionDownloadTask。在前面的搜索结果中,每个结果都含有一个previewUrl。用户选择下载某个歌曲后,会创建相应的downloadTask,并开始下载,下载内容会先存储到一个临时文件中。URLSessionDownloadDelegate中定义了两个方法来监视下载进度和在下载完成时将临时文件拷贝至目标文件。

3,展示 (略)

4,播放:播放下载的歌曲片段

播放采用的是AVPlayer。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,515评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,251评论 4 61
  • 凌晨档的电影 人真的很少很少 我们四个人坐在一排 却像是互不相识 每个人脑补着对于情节的想法和下一幕会发生什么 慵...
    三日梦阅读 304评论 0 2
  • var obj={ name:"小兰", age:22, say:function(){ console.log(...
    大笑一声阅读 149评论 0 0