![基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/4/9dc39939-411a-4108-8a90-e1cb7c4c42bc/9dc39939-411a-4108-8a90-e1cb7c4c42bc1.gif)
![基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/4/9dc39939-411a-4108-8a90-e1cb7c4c42bc/9dc39939-411a-4108-8a90-e1cb7c4c42bc2.gif)
![基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/4/9dc39939-411a-4108-8a90-e1cb7c4c42bc/9dc39939-411a-4108-8a90-e1cb7c4c42bc3.gif)
![基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/4/9dc39939-411a-4108-8a90-e1cb7c4c42bc/9dc39939-411a-4108-8a90-e1cb7c4c42bc4.gif)
![基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/4/9dc39939-411a-4108-8a90-e1cb7c4c42bc/9dc39939-411a-4108-8a90-e1cb7c4c42bc5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、編號(hào):河南大學(xué)2015屆本科畢業(yè)論文基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā) 論文作者姓名: 作 者 學(xué) 號(hào): 所 在 學(xué) 院: 物理與電子學(xué)院 所 學(xué) 專 業(yè): 網(wǎng)絡(luò)工程 導(dǎo)師姓名職稱: 耿濤 副教授 論文完成時(shí)間: 2015年5 月1日 目 錄摘 要:10 前言11 流媒體介紹21.1 流媒體播放流程21.2 流媒體傳輸技術(shù)方面解決的問(wèn)題31.3 流媒體的應(yīng)用42 開(kāi)發(fā)環(huán)境介紹42.1 Xcode開(kāi)發(fā)平臺(tái)42.2 服務(wù)器LeanCloud42.3 數(shù)據(jù)庫(kù)sqlite352.4 系統(tǒng)架構(gòu)53 軟件設(shè)計(jì)與分析63.1 要解決的技術(shù)問(wèn)題63.2 系統(tǒng)核心技術(shù)分析63.3 可行性分析63.4 要解決的軟硬件要求
2、63.5 軟件功能73.6 系統(tǒng)流程圖84 編碼實(shí)現(xiàn)104.1 推薦頁(yè)功能實(shí)現(xiàn)104.2 熱門頁(yè)功能實(shí)現(xiàn)104.3 發(fā)布頁(yè)功能實(shí)現(xiàn)114.4 個(gè)人頁(yè)功能實(shí)現(xiàn)134.5 下載頁(yè)功能實(shí)現(xiàn)145 系統(tǒng)測(cè)試與運(yùn)行195.1 測(cè)試的定義與目的195.2 測(cè)試環(huán)境195.3 測(cè)試的流程與云溪195.4 測(cè)試小結(jié)206 總結(jié)20參考文獻(xiàn)2121 / 24文檔可自由編輯打印基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)(河南大學(xué)物理與電子學(xué)院,河南 開(kāi)封,475004)摘 要: 本文主要研究基于流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)。具體分析了軟件設(shè)計(jì)與開(kāi)發(fā)的流程以及流媒體相關(guān)技術(shù)。以流媒體軟件的設(shè)計(jì)與開(kāi)發(fā)詳細(xì)講述軟件開(kāi)發(fā)和軟件的實(shí)現(xiàn)過(guò)程以及流
3、媒體技術(shù)的使用。該軟件面向二次元亞文化群體的移動(dòng)端聲音內(nèi)容平臺(tái)。具有分享聲音、關(guān)注圈內(nèi)明星用戶最新動(dòng)態(tài)、隨身獲取有趣的聲音內(nèi)容,并實(shí)時(shí)參與其中以及可以通過(guò)圖片配合聲音可以讓你體會(huì)創(chuàng)作視頻的成就。關(guān)鍵詞:軟件設(shè)計(jì), 流媒體, Objective-C, iOSStreaming media software design and developmentZHAO PENG(School of Physics and Electronics, Henan University, Henan Kaifeng 475004, China)Abstract: This paper mainly studie
4、s based on streaming media software design and development. Software design and development process are analyzed in detail, and streaming media technology. With streaming media software design and development of "bed" and the implementation process of software development and software in d
5、etail, and the use of streaming media technology. The software for secondary yuan subculture groups of mobile voice content platform. With a sharing voice, attention circles star users the latest trends, had access to the voice of the interesting content, and involved in real-time, and can through t
6、he pictures with sound experience allows you to create video. Key words: Sortware design , Streaming media , Objective-C, iOS0 前言隨著社會(huì)的發(fā)展與進(jìn)步,手機(jī)的應(yīng)用已與每個(gè)人都不可分開(kāi),相同手機(jī)軟件也伴隨而生,本軟件主要是一款播放器,那么作為播放器軟件當(dāng)中最重要的是什么呢?一款好的播放器為當(dāng)中之最。本課題主要研究了基于流媒體播放器的軟件設(shè)計(jì)與開(kāi)發(fā),那么什么是流媒體呢?簡(jiǎn)單的來(lái)說(shuō)就是你可以邊下載邊播放的一種技術(shù)。在流媒體技術(shù)還不成熟的時(shí)候,人們?cè)诓シ乓曨l的時(shí)候只有下載到本
7、地后才能觀看,這樣浪費(fèi)了大量的時(shí)間和精力,隨著社會(huì)的發(fā)展,流媒體技術(shù)的成熟,用戶可以邊播邊下載節(jié)省了大量的時(shí)間和精力,流媒體技術(shù)也得到了廣泛的應(yīng)用。在目前而言移動(dòng)終端的發(fā)展讓人驚嘆,移動(dòng)終端走人了家家戶戶,隨之而來(lái)的是基于終端的軟件也跟著火了起來(lái),軟件不想硬件是可見(jiàn)的,他是一個(gè)看的見(jiàn)摸不著的存在,在軟件中可以實(shí)現(xiàn)強(qiáng)大的功能,隨著互聯(lián)網(wǎng)的發(fā)展,人們可以做到足不出戶便知天下,這依賴于互聯(lián)網(wǎng)的發(fā)展。互聯(lián)網(wǎng)軟件給人們的生活帶來(lái)了便利1 流媒體介紹流媒體技術(shù)是一種專門用于網(wǎng)絡(luò)多媒體信息傳播和處理的新技術(shù),該技術(shù)能夠在網(wǎng)絡(luò)上實(shí)現(xiàn)傳播和播放同時(shí)進(jìn)行的實(shí)時(shí)工作模式,相對(duì)于其他的一些音、視頻網(wǎng)絡(luò)傳輸和處理技術(shù),
8、流媒體比較成熟和使用,目前已經(jīng)成為網(wǎng)上音、視頻(特別是實(shí)時(shí)音視頻)傳輸?shù)闹饕鉀Q方案。 流媒體與常規(guī)視頻媒體之間的不同在于,流媒體可以邊下載邊播放?!傲鳌钡闹匾饔皿w現(xiàn)在可以明顯的節(jié)省時(shí)間,由于常規(guī)視頻媒體文件比較大,并且只能下載下來(lái)后才能播放,因此下載需要很長(zhǎng)的時(shí)間,妨礙了信息的流通,流媒體的應(yīng)用是近幾年來(lái)Internet發(fā)展的產(chǎn)物,廣泛應(yīng)用于遠(yuǎn)程教育、網(wǎng)絡(luò)電臺(tái)、視頻點(diǎn)播、收費(fèi)播放等。 目前,制約流媒體寬帶應(yīng)用發(fā)展的關(guān)鍵在于互聯(lián)網(wǎng)的服務(wù)質(zhì)量,流媒體從理論上解決了大容量網(wǎng)絡(luò)多媒體數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求問(wèn)題,但是由于大型分組交換網(wǎng)絡(luò)中數(shù)據(jù)傳輸受到諸多因素的影響,網(wǎng)絡(luò)的狀況是不可靠的,其帶寬、負(fù)荷等
9、的變化難以滿足流媒體寬帶業(yè)務(wù)的實(shí)時(shí)性服務(wù)質(zhì)量要求。并且常常造成播放卡殼、延遲、視頻抖動(dòng)劇烈,給使用者感官造成很大影響,所以解決好流媒體網(wǎng)絡(luò)應(yīng)用的服務(wù)質(zhì)量問(wèn)題對(duì)于流媒體寬帶應(yīng)用是極為重要的。(1) 流媒體播放流程流媒體播放之所以可以邊播邊看是由于在流媒體播放中存在3個(gè)緩存池,一邊往緩存池中添加數(shù)據(jù)一邊沖緩存池中取數(shù)據(jù),而為什么是3個(gè)緩存池呢?因?yàn)?個(gè)緩存池可以做到循環(huán)利用,下面介紹下流媒體的播放流程如下圖1所示。圖1 流媒體播放流程(2) 流媒體傳輸技術(shù)方面解決的問(wèn)題在網(wǎng)上進(jìn)行流媒體傳輸,所傳輸?shù)奈募仨氈谱鞒蛇m合流媒體傳輸?shù)牧髅襟w格式文件。用通常的格式存儲(chǔ)的多媒體文件容量很大,若在現(xiàn)有窄帶網(wǎng)絡(luò)
10、上傳輸則要花費(fèi)很長(zhǎng)的時(shí)間,如果遇網(wǎng)絡(luò)繁忙,還會(huì)造成傳輸?shù)闹袛唷A硗?,通常格式的流媒體也不可以按照流媒體的傳輸協(xié)議進(jìn)行傳輸。這里應(yīng)該注意兩點(diǎn):其一是選擇適當(dāng)?shù)膲嚎s算法來(lái)進(jìn)行壓縮,這樣生成的文件容量就會(huì)較小。其二是要向文件中添加流式信息。(3)流媒體的應(yīng)用流媒傳輸體技術(shù)是在Internet媒體傳播方面起到了重要作用,它方便了人們?cè)谌澜绶秶鷥?nèi)的信息、情感交流,其中視頻的點(diǎn)播、遠(yuǎn)程教育、視頻會(huì)議、直播、網(wǎng)上新聞發(fā)布、網(wǎng)絡(luò)廣告等方面的應(yīng)用也更加空前廣泛。2 開(kāi)發(fā)環(huán)境介紹 開(kāi)發(fā)者在開(kāi)發(fā)的過(guò)程中需要相應(yīng)的開(kāi)發(fā)環(huán)境,在iOS開(kāi)發(fā)中由于蘋果將開(kāi)發(fā)環(huán)境都集成在了Xcode中,所有在開(kāi)發(fā)中只需要按照好Xcode即
11、可進(jìn)行開(kāi)發(fā)任務(wù)。(1) Xcode開(kāi)發(fā)平臺(tái)Xcode是蘋果公司向開(kāi)發(fā)人員提供的集成開(kāi)發(fā)環(huán)境(非開(kāi)源),用于開(kāi)發(fā)Mac OS X,iOS的應(yīng)用程序。3 其運(yùn)行于蘋果公司的Mac操作系統(tǒng)下。不管你用C、C+、Objective-C或Java編寫程序,在AppleScript里編寫腳本,還是試圖從另一個(gè)奇妙的工具中轉(zhuǎn)移編碼,你會(huì)發(fā)現(xiàn) Xcode 編譯速度極快。每次操作都很快速和輕松。(2) 服務(wù)器LeanCloudLeanCloud簡(jiǎn)單的來(lái)說(shuō)就是一個(gè)第三方的SDK,為開(kāi)發(fā)者提供了網(wǎng)絡(luò)存儲(chǔ)數(shù)據(jù),其操作類似于數(shù)據(jù)庫(kù),它提供了一系列的方法給開(kāi)發(fā)者,其中最基本就是上傳數(shù)據(jù),修改數(shù)據(jù),刪除數(shù)據(jù),查找
12、數(shù)據(jù)。自 2013 年 9 月發(fā)布以來(lái),已經(jīng)吸引了近萬(wàn)移動(dòng)應(yīng)用和開(kāi)發(fā)者加入。LeanCloud提供 數(shù)據(jù)存儲(chǔ) 、實(shí)時(shí)消息、消息推送 以及 統(tǒng)計(jì)分析 服務(wù),全面涵蓋移動(dòng)應(yīng)用開(kāi)發(fā)的需求;全面支持 iOS、Android、web 等多個(gè)平臺(tái)。幫助開(kāi)發(fā)者擺脫繁重的后端開(kāi)發(fā)負(fù)擔(dān),最大限度地縮短開(kāi)發(fā)周期和加快迭代速度,在激烈的市場(chǎng)競(jìng)爭(zhēng)中勝出。在 LeanCloud 上,數(shù)據(jù)存儲(chǔ)是圍繞 AVObject 進(jìn)行的。每個(gè) AVObject 都包含與 JSON 相兼容的鍵值對(duì)(key-value)數(shù)據(jù)。該數(shù)據(jù)不需要定義模式(schema),因此不用提前指定 AVObject 都有哪些鍵,只要直接設(shè)定鍵值對(duì)即可。(
13、3) 數(shù)據(jù)庫(kù)sqlite3SQLite作為一種嵌入式的關(guān)系型輕量級(jí)的數(shù)據(jù)庫(kù),在本軟件設(shè)計(jì)中將使用第三方庫(kù)FMDB。由于手機(jī)中嵌入了輕量級(jí)的數(shù)據(jù)庫(kù),所有在開(kāi)發(fā)中使用SQLite。SQLite主要執(zhí)行SQL語(yǔ)句,在本軟件設(shè)計(jì)中主要執(zhí)行增刪改查的功能處理應(yīng)用數(shù)據(jù)然后返回給客服端。(4) 系統(tǒng)架構(gòu)iOS系統(tǒng)架構(gòu)圖如表2所示。表2 iOS系統(tǒng)結(jié)構(gòu)iOS系統(tǒng)架構(gòu)第一層Cocoa Touch第二層Media第三層Core Services第四層Core OS Layer核心操作系統(tǒng)層(Core OS Layer):包括內(nèi)存的管理以及文件系統(tǒng)、電源的管理和一些其他的操作系統(tǒng)的任務(wù)。它能直接和硬件設(shè)備進(jìn)行交互。
14、包括以下這些組件:OS X Kernel Mach 3.0 BSDSockets Power Mgmt Keychain Certificates SecurityBonjour核心服務(wù)層(Core Services):我們可以通過(guò)它來(lái)訪問(wèn)IOS的服務(wù)。它包括以下這些組件:Collections Address Bo
15、ok Networking SQLite Core LocationNet Services Threading PreferencesURL Utilities媒體層(Media):通過(guò)它我們能在程序中使用各種媒體文件,進(jìn)行音頻和視頻的錄制,圖形繪制,以及制作基礎(chǔ)的動(dòng)畫效果。它包括以下這些組件:Core Audio OpenGL
16、160;Audio MixingAudio Recording Video Playback JPG,PNG,TIFFPDF Quartz Core AnimationOpenGL ES可觸摸層(Cocoa Touch):為我們的應(yīng)用開(kāi)發(fā)提供了各種實(shí)用的框架,并且大部分與用戶界面UI有關(guān),本質(zhì)上來(lái)說(shuō)它負(fù)責(zé)用戶在IOS設(shè)備上的觸摸交互操作。它包括以下這些組件:Multi-Touch Events Core Motion
17、160; CameraView Hierarchy Localization AlertsWeb Views Image Picker Multi-Touch Controls在Cocoa Touch層中的很多技術(shù)都是基于Objective-C語(yǔ)言的。Objective-C語(yǔ)言為iOS提供了像集合、文件管理、網(wǎng)絡(luò)操作等支持。3 軟件設(shè)計(jì)分析在做一款軟件之前首先要對(duì)該軟件進(jìn)行分析與設(shè)計(jì),設(shè)計(jì)做的是軟件的原型圖,分析做的是軟件的可行性。在對(duì)軟件做設(shè)計(jì)
18、分析是主要有以下幾個(gè)問(wèn)題:(1)要解決的軟硬件要求在做iOS開(kāi)發(fā)的時(shí)候由于對(duì)軟硬件要求相對(duì)來(lái)高,故要考慮到本身的經(jīng)濟(jì)能力,下面對(duì)iOS開(kāi)發(fā)中的軟硬件分析。表3 硬件需求手機(jī)電腦數(shù)據(jù)線WIFI數(shù)量蘋果手機(jī)一臺(tái)蘋果電腦一臺(tái)若干條信號(hào)良好表4軟件需求PhotoshopXcode描述圖片處理工具iOS開(kāi)發(fā)工具(2)要解決的技術(shù)問(wèn)題流媒體的播放需要相關(guān)的技術(shù)支持,圖片的處理與美化,需要解決,還有就是在開(kāi)發(fā)過(guò)程可能會(huì)遇到bug,這些都是問(wèn)題。IOS開(kāi)發(fā),需要相關(guān)人員有一定的IOS開(kāi)發(fā)經(jīng)驗(yàn)。(3)系統(tǒng)核心技術(shù)分析在基于流媒體軟件的開(kāi)發(fā)過(guò)程中,視頻的播放技術(shù)當(dāng)然是核心技術(shù),有一個(gè)很好的播放器,能夠支持主流的視
19、頻格式,能夠支持硬解和軟解,能夠適應(yīng)大部分的屏幕。這些都是視頻軟件的核心技術(shù)。(4)可行性分析1 技術(shù)可行性分析對(duì)于本視頻軟件主要取決于本人是否有一定的IOS開(kāi)發(fā)經(jīng)驗(yàn),是否有很強(qiáng)的代碼編寫能力,是否有對(duì)事務(wù)流程的分析能力。依據(jù)目前IOS的發(fā)展,視頻的開(kāi)發(fā)已經(jīng)不是問(wèn)題,本人的技術(shù)也能達(dá)到要求。因此,在技術(shù)上是可行的。2 經(jīng)濟(jì)可行性分析該軟件是在Mac os系統(tǒng)電腦中開(kāi)發(fā)的,一臺(tái)電腦加上一部手機(jī),數(shù)據(jù)線,鼠標(biāo)器其他部件,都是符合我的經(jīng)濟(jì)水平的,加上自己的技術(shù)支持,都是處于消耗錢財(cái)比較低的,因此在經(jīng)濟(jì)上完全可行。(5) 軟件功能本軟件主要功能模塊有:推薦頁(yè)、熱門頁(yè)、廣場(chǎng)頁(yè)、上傳頁(yè)、個(gè)人頁(yè)等。其中推薦
20、頁(yè)是為用戶推薦優(yōu)質(zhì)的作品供用戶瀏覽,熱門頁(yè)又分為2大板塊,其一是日榜,經(jīng)過(guò)相應(yīng)的排名算法將一天內(nèi)的作品按名次展示,另一個(gè)是周榜,顧名思義是將一周內(nèi)優(yōu)質(zhì)的作品按名次展現(xiàn),其中排名算法是對(duì)該作品的各個(gè)方面綜合加權(quán),廣場(chǎng)頁(yè)收集了軟件中的各種標(biāo)簽,也叫標(biāo)簽系統(tǒng),每個(gè)作品會(huì)掛到一個(gè)標(biāo)簽下,這樣用戶可以在廣場(chǎng)頁(yè)快速的找到對(duì)應(yīng)標(biāo)簽的所有作品,上傳頁(yè)是提供給用戶上傳作品以及創(chuàng)作作品的,個(gè)人頁(yè)是對(duì)用戶的系統(tǒng)設(shè)置。(6) 系統(tǒng)流程圖下面簡(jiǎn)單介紹一下軟件系統(tǒng)流程:軟件采用客服端-服務(wù)器模式。其中主要撥快分為三大模塊,第一數(shù)據(jù)庫(kù)模塊,第二網(wǎng)絡(luò)數(shù)據(jù)模塊,第三是數(shù)據(jù)展現(xiàn)模塊。下面簡(jiǎn)單介紹下軟件系統(tǒng)流程。1 數(shù)據(jù)流程客服端
21、上傳數(shù)據(jù)到服務(wù)器端客服端將數(shù)據(jù)保存在本地?cái)?shù)據(jù)庫(kù)中,以便在沒(méi)有網(wǎng)絡(luò)的情況下是軟件有操作。性。數(shù)據(jù)庫(kù)客服端服務(wù)器客服端向服務(wù)器請(qǐng)求數(shù)據(jù),將數(shù)據(jù)展現(xiàn)在客服端上。圖 3 數(shù)據(jù)流程2 操作流程表 5 操作流程表本地?cái)?shù)據(jù)庫(kù)第三方登錄服務(wù)器用戶服務(wù)器 第三方登錄 返回成功 登錄成功后,請(qǐng)求用戶信息 返回用戶信息 用戶瀏覽請(qǐng)求音頻信息 返回音頻信息 用戶點(diǎn)擊播放 用戶點(diǎn)擊收藏 查找本地?cái)?shù)據(jù)庫(kù)收藏 返回收藏信息 用戶點(diǎn)擊播放歷史 查找本地?cái)?shù)據(jù)庫(kù)歷史 返回播放歷史信息圖3.2用戶下載音頻基于本地?cái)?shù)據(jù)庫(kù)歷史返回下載信息4 編程與實(shí)現(xiàn)(1)推薦頁(yè)功能實(shí)現(xiàn)在推薦頁(yè)中主要是通過(guò)接口從服務(wù)其中讀取數(shù)據(jù),將推薦的數(shù)據(jù)綁定到手
22、機(jī)UI界面中。代碼如下:AVQuery是一個(gè)查詢對(duì)象,通過(guò)includeKey去包含查詢的數(shù)據(jù)。AVQuery *hotQuery = hot query; hotQuery whereKey:"visible" equalTo:NSNumber numberWithInt:1; hotQuery addAscendingOrder:"index" hotQuery includeKey:"coverFile" hotQuery.cachePolicy = kAVCachePolicyNetworkElseCache; hotQuer
23、y findObjectsInBackgroundWithBlock:(NSArray *objects, NSError *error) /objects為查詢返回的所有數(shù)據(jù) 里面裝的全是AVObject對(duì)象;AVQuery是創(chuàng)建一個(gè)查詢,通過(guò)where限制查詢條件,最終返回我們需要查詢的數(shù)據(jù)objects。當(dāng)我們拿到數(shù)據(jù)后在本地對(duì)數(shù)據(jù)進(jìn)行本地結(jié)構(gòu)化處理后讓后綁定到UI頁(yè)面中最終展現(xiàn)給用戶。(2) 熱門頁(yè)實(shí)現(xiàn)熱門頁(yè)的功能包括2部分:一部分是日榜,收集了用戶最新上傳已經(jīng)播放量和點(diǎn)擊量最高的做平。另一部分是周榜,展現(xiàn)來(lái)一周以來(lái)的作品受歡迎程度,即一周排行榜。代碼實(shí)現(xiàn)如下:讀取leanCloud數(shù)
24、據(jù):首先從緩存加載完成在從網(wǎng)絡(luò)加載一遍并跟新緩存。這樣的目的是防止在沒(méi)有網(wǎng)絡(luò)的情況下打開(kāi)本軟件一片空白產(chǎn)生不好的用戶體驗(yàn)。 AVQuery *query = sound query;query whereKey:"type" equalTo:NSNumber numberWithInt:LongSoundType;if (SoundQueryTypePopularPlayer = soundQueryType) query includeKey:"user" query includeKey:"root" query includeK
25、ey:"coverFile" query includeKey:"soundFile" query includeKey:"root.user" query includeKey:"root.coverFile" query includeKey:"root.soundFile" query.limit = limit;skip在這里是做分頁(yè)使用的,由于數(shù)據(jù)量較大一次查詢較為困難,古使用分頁(yè)查詢數(shù)據(jù),skip為查詢跳過(guò)的初始數(shù)量。 if (skip > 0) query.skip = sk
26、ip; if (orderFieldType = OrderFieldTypeRank1) query addDescendingOrder:"rank1" query addDescendingOrder:"createdAt" else if (orderFieldType = OrderFieldTypeRank2) query addDescendingOrder:"rank2" query addDescendingOrder:"createdAt" else if (orderFieldType = O
27、rderFieldTypeDefault) query addDescendingOrder:"createdAt" if (isLoadCache) query.cachePolicy = isLoadCacheQuery; else query.cachePolicy = isNotLoadCacheQuery; NSError _autoreleasing *error = nil; NSArray *array = query findObjects:&error; 在上述代碼中我們可以看到很多的includeKey,它的作用就是我們?cè)诓樵兊臅r(shí)候如果查詢的結(jié)
28、果中還有其他的AVObject對(duì)象時(shí),我們希望服務(wù)器也要將這些對(duì)象的數(shù)據(jù)返回給客服端。(3) 發(fā)布頁(yè)功能的實(shí)現(xiàn)iOS開(kāi)發(fā)中播放音樂(lè)可以使用MPMusicPlayerController類來(lái)實(shí)現(xiàn),播放視頻可以使用MPMoviePlayerController和MPMoviePlayerViewController類來(lái)實(shí)現(xiàn),同時(shí)MPMediaPickerController 類可以用于從系統(tǒng)媒體庫(kù)中選擇媒體播放。這幾個(gè)類都包含與MediaPlayer.framework框架中。-(void)mediaPicker:(MPMediaPickerController *)mediaPicker did
29、PickMediaItems:(MPMediaItemCollection *)mediaItemCollectionself.myMusicPlayer = nil;self.myMusicPlayer = MPMusicPlayerController alloc init;self.myMusicPlayer beginGeneratingPlaybackNotifications;NSNotificationCenter defaultCenter addObserver:self selector:selector(musicPlayerStatedChanged:) name:MP
30、MusicPlayerControllerPlaybackStateDidChangeNotification object:self.myMusicPlayer;NSNotificationCenter defaultCenter addObserver:self selector:selector(nowPlayingItemIsChanged:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:self.myMusicPlayer;NSNotificationCenter defaultCent
31、er addObserver:self selector:selector(volumeIsChanged:) name:MPMusicPlayerControllerVolumeDidChangeNotification object:self.myMusicPlayer;self.myMusicPlayer setQueueWithItemCollection:mediaItemCollection;mediaPicker dismissViewControllerAnimated:YES completion:nil;(4) 個(gè)人頁(yè)功能實(shí)現(xiàn)在個(gè)人頁(yè)中主要是一些軟件的設(shè)置功能,其中包括分享
32、功能、意見(jiàn)反饋、關(guān)于我們、消息推送、睡眠定時(shí)等功能。其中也有用戶的一些個(gè)人信息展現(xiàn)的邏輯功能,包括用戶關(guān)注列表、粉絲列表、作品列表、下載列表、動(dòng)態(tài)列表等。1定時(shí)功能實(shí)現(xiàn)實(shí)現(xiàn)定時(shí)功能的原理是在應(yīng)用程勛中啟動(dòng)一個(gè)定時(shí)器,在預(yù)定的時(shí)間后去執(zhí)行某塊代碼,具體實(shí)現(xiàn)如下。_timer = NSTimer scheduledTimerWithTimeInterval:1.0 block:/timerRemain是定時(shí)的時(shí)間。 _timerRemain-; if (_timerRemain <= 0) /關(guān)閉定時(shí)器 _timer invalidate; _timerTitleLabel.text = &
33、quot;" _isStartTimer = NO; _timerSwitchButton.selected = _isStartTimer;/關(guān)閉播放器 BWSoundManager sharedManager stop; NSNotificationCenter defaultCenter postNotificationName:"stopSoundChangePlayerImage" object:nil; else _timerTitleLabel.text = TimeUtil getTimeStrStyle3:_timerRemain; repeat
34、s:YES;2消息推送功能實(shí)現(xiàn)UIApplication sharedApplication registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;3清除緩存功能實(shí)現(xiàn)- (void)clearCache NSArray *pathcaches=NSSearchPathForDirectoriesInDomains(NSCach
35、esDirectory, NSUserDomainMask, YES); NSString* diskCachePath = pathcaches objectAtIndex:0; diskCachePath = NSString stringWithFormat:"%/com.hackemist.SDWebImageCache.default",diskCachePat
36、h; NS * = NS defaultManager; if ( ) NSError *error; removeItemAtPath:diskCachePath error:&error;
37、160; if (error) SGInfoAlert showInfo:"緩存刪除失敗" bgColor:UIColor darkGrayColor CGColor fgColor:UIColor whiteColor CGColor inView: &
38、#160; UIApplication sharedApplication.keyWindow vertical:0.8; else SGInfoAlert showInfo:"緩存刪除成功" bgColor:UIColor darkGrayCol
39、or CGColor fgColor:UIColor whiteColor CGColor inView: UIApplication sharedApplication.keyWindow vertical:0.8; (5) 下載功能實(shí)現(xiàn)在下載中我使用了FMDB第三方框架的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)使用中建立3張表分表記錄了音頻信息、多圖信息、用戶
40、信息。表6 下載結(jié)構(gòu)字段objectIdtitlesizelengthalbumObjectIdisFinishedcreatedAtsoundURL介紹主鍵,對(duì)應(yīng)唯一的一個(gè)音頻音頻的標(biāo)題音頻的大小。單位為KB音頻的播放時(shí)長(zhǎng),單位S音頻對(duì)應(yīng)的專輯的唯一標(biāo)示objectId標(biāo)志音頻是否下載完成音頻創(chuàng)建的時(shí)間音頻封面圖片的網(wǎng)絡(luò)地址表7 音頻信息字段objectIdsoundObjectIdstareTimeimageUrl介紹主鍵,對(duì)應(yīng)了每一張多圖多圖對(duì)應(yīng)的音頻多圖出現(xiàn)的時(shí)間圖片的URL地址表8 多圖信息表字段objectIdtitlealbumUsercoverURL介紹主鍵,專輯的唯一標(biāo)識(shí)專輯
41、的名字專輯作者專輯封面的網(wǎng)絡(luò)地址在上述3個(gè)表中分表記錄了音頻信息,音頻對(duì)應(yīng)的專輯的信息以及音頻對(duì)應(yīng)的多圖信息。由于使用了FMDB框架在實(shí)現(xiàn)增刪改查時(shí)只需調(diào)用想要的方法即可實(shí)現(xiàn)具體代碼實(shí)現(xiàn)如下。這里是ASIHttpRequest代理回調(diào)方法,在該方法中處理下載的數(shù)據(jù),主要做的是本地結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)已經(jīng)處理該文件是否已經(jīng)存在或已經(jīng)下載邏輯。-(void)beginRequest:(*) isBeginDown:(BOOL)isBeginDown for(ASIHTTPRequest *tempRequest in self.downinglist) /* 注意這里判讀是否是同一下載的方法,asih
42、ttprequest 有三種url: url,originalurl,redirectURL 經(jīng)過(guò)實(shí)踐,應(yīng)該使用originalurl,就是最先獲得到的原下載地址 */ NSLog("%",tempRequest.url absoluteString); if(tempRequest.originalURL absoluteStringlastPathComponent isEqualToString: lastPathComponent) if (tempRequest isExecuting&&isBeginDown) return; else if (
43、tempRequest isExecuting&&!isBeginDown) tempRequest setUserInfo:NSDictionary dictionaryWithObject: forKey:"File" / tempRequest cancel; self.downloadDelegate updateCellProgress:tempRequest; return; ; NS *NS defaultManager; NSData * contentsAtPath:; NSInteger receivedDataLength= lengt
44、h; NSString stringWithFormat:"%ld",(long)receivedDataLength; NSLog("start down:已經(jīng)下載:%",); ASIHTTPRequest *request=ASIHTTPRequest alloc initWithURL:NSURL URLWithString:; request.delegate=self; request setDownloadDestinationPath: targetPath; request setTemporary; request setDownloa
45、dProgressDelegate:self; request setNumberOfTimesToRetryOnTimeout:2; / request setShouldContinueWhenAppEntersBackground:YES; / request setDownloadProgressDelegate:downCgress;/設(shè)置進(jìn)度條的代理,這里由于下載是在AppDelegate里進(jìn)行的全局下載,所以沒(méi)有使用自帶的進(jìn)度條委托,這里自己設(shè)置了一個(gè)委托,用于更新UI request setAllowResumeFor;/支持?jǐn)帱c(diǎn)續(xù)傳 request setUse
46、rInfo:NSDictionary dictionaryWithObject: forKey:"File"/設(shè)置上下文的文件基本信息 request setTimeOutSeconds:30.0f; if (isBeginDown) request startAsynchronous; /如果文件重復(fù)下載或暫停、繼續(xù),則把隊(duì)列中的請(qǐng)求刪除,重新添加 BOOL exit = NO; for(ASIHTTPRequest *tempRequest in self.downinglist) if(tempRequest.url absoluteStringlastPathCom
47、ponent isEqualToString: lastPathComponent ) self.downinglist replaceObjectAtIndex:_downinglist indexOfObject:tempRequest withObject:request ; exit = YES; break; if (!exit) self.downinglist addObject:request; NSLog("EXIT!-:%",request.url absoluteString); -(void)resumeRequest:(ASIHTTPRequest
48、 *)request NSInteger max = maxcount; * = request.userInfo objectForKey:"File" NSInteger downingcount =0; NSInteger indexmax =-1; for ( * _) if () downingcount+; if (downingcount=max) indexmax = _ indexOfObject:file; /此時(shí)下載中數(shù)目是否是最大,并獲得最大時(shí)的位置Index if (downingcount=max) *file = _ objectAtIndex:indexmax; if () = NO; = YES; /中止一個(gè)進(jìn)程使其進(jìn)入等待 for ( * _) if ( isEqualToString:) = YES; = NO; = NO; /重新開(kāi)始此下載 self st
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年印染機(jī)械電氣設(shè)備項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年牛奶巧克力項(xiàng)目可行性研究報(bào)告
- 2025年中國(guó)加壓鉸刀市場(chǎng)調(diào)查研究報(bào)告
- 2025至2030年非標(biāo)機(jī)械密封項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年中國(guó)HIPS市場(chǎng)調(diào)查研究報(bào)告
- 2025至2030年磁項(xiàng)鏈項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年濕式多片電磁離合器項(xiàng)目投資價(jià)值分析報(bào)告
- 中考數(shù)學(xué)總復(fù)習(xí)《應(yīng)用題》專項(xiàng)檢測(cè)卷帶答案
- 光電電視測(cè)斜儀項(xiàng)目績(jī)效評(píng)估報(bào)告
- 2025年培訓(xùn)師資培訓(xùn)合同
- 稀土配合物和量子點(diǎn)共摻雜構(gòu)筑發(fā)光軟材料及其熒光性能研究
- 衛(wèi)生部手術(shù)分級(jí)目錄(2023年1月份修訂)
- JJG 921-2021環(huán)境振動(dòng)分析儀
- 中藥炮制學(xué)-第五、六章
- 中國(guó)風(fēng)軍令狀誓師大會(huì)PPT模板
- 小兒高熱驚厥精品課件
- 2023機(jī)械工程師考試試題及答案
- 2022年電拖實(shí)驗(yàn)報(bào)告伍宏淳
- 豐田汽車戰(zhàn)略規(guī)劃與戰(zhàn)略管理體系研究(2021)
- 即興口語(yǔ)(姜燕)-課件-即興口語(yǔ)第一章PPT-中國(guó)傳媒大學(xué)
- 冷卻塔是利用水和空氣的接觸
評(píng)論
0/150
提交評(píng)論