简介:这是一个来自 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。