資源描述:
《【無限互聯(lián)】學(xué)員作品:喜馬拉雅聽書iOS客戶端.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、【無限互聯(lián)】學(xué)員作品:喜馬拉雅聽書iOS客戶端本次做的是一款聽書軟件,主要的功能包括在線音頻的收聽,音頻內(nèi)容下載,F(xiàn)M廣播,用戶可以通過新浪微博賬號,QQ賬號,人人網(wǎng)賬號登陸該軟件,也可以免登陸進(jìn)行瀏覽。此款音樂播放軟件包含相聲、音樂、曲藝、綜藝節(jié)目等多種音頻內(nèi)容,年輕人可以使用此款播放器來收聽音樂和娛樂信息,中年人可以使用它來收聽像相聲、戲曲、歷史等內(nèi)容,該軟件能夠滿足不同年齡段對音頻內(nèi)容的需求。通過賬號登陸的用戶,還可以對自己喜愛的內(nèi)容進(jìn)行關(guān)注,關(guān)注的內(nèi)容一更新,就會像微博一樣自動推送給你,無需再費勁找。同時,用戶可以將自己喜愛的音樂,自己錄制的聲音進(jìn)行分享上傳。實現(xiàn)效果展示
2、:登陸界面主界面(find界面)下載界面(沒有下載任務(wù)時,文字提示)下載界面(有任務(wù)時)個人中心界面(未登錄時,彈出登陸界面)個人中心界面(登陸后)Find模塊子界面:1.子類別目錄2.專輯列表頁面3.專輯詳情頁面4.播放界面(主要功能之一)其他界面不再進(jìn)行贅述。本項目整體采用MVC架構(gòu),分為發(fā)現(xiàn)、下載、動態(tài)、個人中心4個模塊。發(fā)現(xiàn)模塊在進(jìn)行界面展示的基礎(chǔ)上,重點是對功能的實現(xiàn),像:使用賬號登陸、音樂在線播放并實現(xiàn)全局播放、音樂下載并實現(xiàn)了全局下載和斷點下載。一、賬號登陸在這里以新浪微博賬號登陸為例,將新浪微博提供的SDK集成到項目中,從本地的plist文件中查詢是否已存在用戶的
3、token,如果存在,則直接進(jìn)入項目的主界面(主控制器),如果不存在,跳轉(zhuǎn)到登陸界面。在該登陸界面可以選擇使用不同的賬號進(jìn)行登陸,也可以向上滑動界面,不登陸進(jìn)入頁面。1.不登陸進(jìn)入頁面。點擊第4個模塊(個人中心界面)時,彈出的是另一個登陸界面,上圖以做展示。在這個登陸界面進(jìn)行登陸,會跳轉(zhuǎn)到主界面,并默認(rèn)選擇第1個模塊(發(fā)現(xiàn)界面)。2.通過登陸進(jìn)入頁面。點擊第四個模塊時,彈出的是個人信息頁面,在該頁面可以查看并編輯用戶信息。同時可以通過設(shè)置界面清除緩存,注銷登陸等功能。注銷登陸時,會清除本地保存的用戶信息(token等),并跳轉(zhuǎn)到主界面,默認(rèn)打開Find模塊。賬號登陸的重點是在根據(jù)
4、本地是否緩存用戶Token來判斷頁面的展示內(nèi)容,并且,只能在主界面下的第一個模塊調(diào)用新浪SDK的登陸方法,不能在主界面進(jìn)行調(diào)用。二、音樂的全局播放集成AudioPlayer框架,來對項目中得音頻內(nèi)容進(jìn)行播放。在進(jìn)行音樂播放時,通過調(diào)用封裝好的音樂播放類中得單例方法來實現(xiàn)全局播放和控制。音樂播放的重點是在對播放狀態(tài)的控制上,當(dāng)點擊播放時,這時候如果切換頁面,再次返回播放頁面時,播放按鈕等返回為未播放時的狀態(tài),并且,音樂仍在繼續(xù)播放。這時候,再次點擊播放按鈕,會同時播放兩個音樂,這樣影響用戶體驗。所以需要在點擊播放,或者點擊暫停時,對播放器的狀態(tài)進(jìn)行修改。三、音樂的全局下載和斷點下載
5、音樂的全局下載是在APPDelegate中定義方法,從外部傳入下載信息。[objc]viewplaincopy1.-(void)startDown{2.3.NSString*urlString=self.downModel.downloadUrl;4.5.if(_localUrl.length>0){6.urlString=_localUrl;7.}8.9.NSURL*url=[NSURLURLWithString:urlString];10.11.NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:url
6、];12.//設(shè)置不緩存13.[requestsetCachePolicy:NSURLRequestReloadIgnoringCacheData];14.15.//斷點續(xù)傳16.if(receiveTotal>0){17.//設(shè)置繼續(xù)下載的位置18.NSString*value=[NSStringstringWithFormat:@"bytes=%d-",(int)receiveTotal];19.[requestsetValue:valueforHTTPHeaderField:@"Range"];20.21.NSLog(@"繼續(xù)下載:%@",request.allHTTPHe
7、aderFields);22.}23.24.//發(fā)送異步請求25._connection=[NSURLConnectionconnectionWithRequest:requestdelegate:self];26.27.if(self.trackModel!=nil){28._filePath=[NSHomeDirectory()stringByAppendingFormat:@"/Documents/temp/%@.aac",self.trackModel.title];29