簡介:這是一個來自 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。