版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于iOS的天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p> [摘要] 隨著科學(xué)技術(shù)的發(fā)展,移動(dòng)終端逐漸走進(jìn)人們的視線,相關(guān)應(yīng)用越來(lái)越廣泛,并在人們的日常生活中扮演著越來(lái)越重要的角色。本課題研究的是基于iOS平臺(tái)下的天氣軟件,目的是幫助用戶隨時(shí)隨地查詢天氣信息及天氣變化情況,讓生活更加舒適方便。本文詳細(xì)講述了iOS平臺(tái)下天氣軟件的界面設(shè)計(jì)及數(shù)據(jù)處理部分,主要包括界面的實(shí)現(xiàn)、控件的使用、界面的
2、布局和數(shù)據(jù)的處理等內(nèi)容,結(jié)合WEB服務(wù)網(wǎng)的氣象數(shù)據(jù),將準(zhǔn)確的天氣情況以友好的方式呈現(xiàn)給用戶,使用戶可以更加愉快地體驗(yàn)本軟件的服務(wù)。</p><p> [關(guān)鍵詞] iOS 界面 查詢 天氣預(yù)報(bào)</p><p> Design And Implementation Of Weather Query System Based On iOS</p><p> [
3、Abstract] With the development of science and technology, the mobile terminal gradually into the people's attention, related to more widely, and play an increasingly important role in people's daily lives. The st
4、udy of this topic is the weather forecast software based on the iOS platform ,and designed to help the user to query weather information and weather changes anytime, anywhere, to make life more comfortable and convenient
5、. This paper describes the software interface design of the iOS pla</p><p> [Key words] iOS interface query weather orecast</p><p><b> 目錄</b></p><p><b> 1 引
6、言1</b></p><p> 1.1 項(xiàng)目開(kāi)發(fā)背景1</p><p> 1.2 國(guó)內(nèi)外相關(guān)領(lǐng)域研究現(xiàn)狀1</p><p> 1.3 論文研究的內(nèi)容2</p><p> 1.4 論文研究的意義3</p><p> 1.5 論文內(nèi)容的安排3</p><p> 2
7、 系統(tǒng)解決方案4</p><p> 2.1 需求分析4</p><p> 2.1.1 功能需求4</p><p> 2.1.2 可靠性和可用性需求7</p><p> 2.1.3 系統(tǒng)內(nèi)容需求8</p><p> 2.2 技術(shù)架構(gòu)8</p><p> 2.2.1 Foun
8、dation框架簡(jiǎn)介8</p><p> 2.2.3 UIKit框架簡(jiǎn)介9</p><p> 2.2.3 ASIHTTPRequest類庫(kù)簡(jiǎn)介9</p><p> 2.2.4 JSONkit類庫(kù)簡(jiǎn)介9</p><p> 2.2.5 MVC設(shè)計(jì)模式簡(jiǎn)介10</p><p> 2.3 開(kāi)發(fā)平臺(tái)10&l
9、t;/p><p> 2.3.1 iOS開(kāi)發(fā)基本背景簡(jiǎn)介10</p><p> 2.3.2 iOS開(kāi)發(fā)平臺(tái)搭建11</p><p> 3 系統(tǒng)總體設(shè)計(jì)12</p><p> 3.1 系統(tǒng)模塊劃分12</p><p> 3.1.1 菜單模塊12</p><p> 3.1.2 天氣查
10、詢模塊13</p><p> 3.1.3 分享模塊13</p><p> 3.2 系統(tǒng)總體結(jié)構(gòu)13</p><p> 3.2.1 系統(tǒng)模塊協(xié)作關(guān)系13</p><p> 3.2.2 系統(tǒng)啟動(dòng)流程14</p><p> 3.2.3 系統(tǒng)內(nèi)容結(jié)構(gòu)組織14</p><p> 4
11、 系統(tǒng)詳細(xì)設(shè)計(jì)16</p><p> 4.1 菜單模塊16</p><p> 4.1.1 菜單模塊的主要功能16</p><p> 4.1.2 菜單模塊的UI布局16</p><p> 4.1.3 菜單模塊的動(dòng)畫(huà)效果實(shí)現(xiàn)16</p><p> 4.2 天氣查詢模塊17</p><
12、;p> 4.2.1用POST方法進(jìn)行請(qǐng)求數(shù)據(jù)17</p><p> 4.2.2處理請(qǐng)求到的數(shù)據(jù)17</p><p> 4.2.3模塊功能實(shí)現(xiàn)及效果圖18</p><p> 4.2.3創(chuàng)建畫(huà)板并畫(huà)折線圖21</p><p> 4.3 分享模塊22</p><p> 4.3.1實(shí)景拍攝22&l
13、t;/p><p> 4.3.2調(diào)用本地相機(jī)23</p><p> 4.3.2調(diào)用OAuth認(rèn)證24</p><p> 4.3.3向發(fā)微博接口發(fā)送請(qǐng)求26</p><p> 4.3.4用JSONKit處理數(shù)據(jù)29</p><p> 4.4 關(guān)于和幫助模塊29</p><p> 4
14、.4.1“關(guān)于”界面的設(shè)計(jì)及實(shí)現(xiàn)29</p><p> 4.4.2“幫助”界面的設(shè)計(jì)及實(shí)現(xiàn)30</p><p><b> 5系統(tǒng)測(cè)試31</b></p><p> 5.1 單元測(cè)試31</p><p> 5.2 集成測(cè)試32</p><p> 5.3 可用性測(cè)試33</
15、p><p><b> 6結(jié)論35</b></p><p><b> 致謝36</b></p><p><b> 參考文獻(xiàn)37</b></p><p><b> 1 引言</b></p><p> 1.1 項(xiàng)目開(kāi)發(fā)背景&l
16、t;/p><p> 蘋(píng)果iOS是由蘋(píng)果公司開(kāi)發(fā)的手持設(shè)備操作系統(tǒng)。蘋(píng)果公司最早于2007年1月9日的Macworld大會(huì)上公布這個(gè)系統(tǒng)。iOS與蘋(píng)果的Mac OS X操作系統(tǒng)一樣,它也是以Darwin為基礎(chǔ)的,因此同樣屬于類Unix的商業(yè)操作系統(tǒng)。原本這個(gè)系統(tǒng)名為iPhone OS,直到2010年6月7日WWDC大會(huì)上宣布改名為iOS。截止至2011年11月,根據(jù)Canalys的數(shù)據(jù)顯示,iOS已經(jīng)占據(jù)了全球智能手
17、機(jī)系統(tǒng)市場(chǎng)份額的30%,在美的國(guó)市場(chǎng)占有率為43%。iPhone將基于OS X的移動(dòng)計(jì)算與創(chuàng)新的多點(diǎn)觸摸屏幕、位置感知、板載加速計(jì)等結(jié)合在一起。蘋(píng)果公司于2008年3月首次發(fā)布iPhone SDK beta時(shí),開(kāi)發(fā)人員蜂擁而至,一度造成服務(wù)器癱瘓。不到一周,iphone SDK的下載量就超過(guò)10萬(wàn)[1]。</p><p> 天氣軟件是一種非常實(shí)用的信息服務(wù),隨著智能手機(jī)的不斷普及,各種智能手機(jī)平臺(tái)下都有各種各樣
18、的天氣軟件。iOS作為現(xiàn)在主流的智能手機(jī)之一,自然也需要這方面的軟件。天氣關(guān)系到人們的日常生活,如告知溫暖,方便出行等。此外,對(duì)未來(lái)天氣的預(yù)測(cè)還可以幫助人們進(jìn)行農(nóng)作物的澆灌、施肥、收割等工作。</p><p> 基于iOS平臺(tái)的天氣軟件已經(jīng)有很多,經(jīng)過(guò)分析,用戶第一眼往往是一個(gè)軟件的外觀,一個(gè)好看的界面才能讓用戶以一種愛(ài)美之心去嘗試,才能進(jìn)一步了解一個(gè)軟件的好壞,所以吸引眼球的界面是爭(zhēng)取用戶的第一步。因此,界面
19、設(shè)計(jì)工作對(duì)應(yīng)用程序來(lái)說(shuō)非常重要,在界面上吸引了用戶,才能進(jìn)一步讓用戶體驗(yàn)應(yīng)用程序中的功能,使用這個(gè)軟件。</p><p> 1.2 國(guó)內(nèi)外相關(guān)領(lǐng)域研究現(xiàn)狀</p><p> 隨著iOS蓬勃的發(fā)展,涌入了大量的iOS開(kāi)發(fā)人員,同時(shí)華麗的iOS產(chǎn)品也層出不窮。雖然iOS的發(fā)展達(dá)到了前所未有的高度,但是在國(guó)內(nèi)關(guān)于天氣預(yù)報(bào)的軟件也緊緊只有19款,所以開(kāi)發(fā)出用戶體驗(yàn)好并且實(shí)用的軟件越來(lái)越重要。下
20、面介紹一下國(guó)內(nèi)外最流行的三款iOS系統(tǒng)天氣軟件并做個(gè)簡(jiǎn)單的對(duì)比,他們分別是墨跡天氣、涂鴉天氣和蜜蜂天氣。</p><p><b> 墨跡天氣</b></p><p> ?、偬鞖怙@示面板:墨跡天氣算是國(guó)內(nèi)最有名的天氣查詢軟件,用戶比較最多,界面顯示也比較美觀、華麗,并且可以添加多個(gè)城市。默認(rèn)顯示四天的天氣情況,并且左右滑動(dòng)可以切換城市管理-天氣-溫度趨勢(shì)圖三個(gè)界面。溫
21、度趨勢(shì)圖可以顯示未來(lái)五天的氣溫變化情況和日夜天氣情況。</p><p> ② 設(shè)置以及其他功能:墨跡天氣的軟件設(shè)置只包括更新間隔等設(shè)置,除了天氣信息外不提供其它更多的相關(guān)資訊,是一款相對(duì)來(lái)說(shuō)比較單純的軟件。</p><p> ?、?CPU內(nèi)存占用:在軟件開(kāi)啟的情況下,實(shí)時(shí)CPU占用率在50%-70%,運(yùn)行過(guò)程中一直居高不下。內(nèi)存占用大概為10M左右。</p><p&g
22、t;<b> 涂鴉天氣</b></p><p> ① 天氣顯示面板:國(guó)外的一款小軟件,特色在其涂鴉的天氣顯示方式,非常生動(dòng),就像掌中的一個(gè)小劇場(chǎng)。左下角的按鈕可以切換“顯示”和“隱藏”詳細(xì)信息,天氣預(yù)報(bào)也不是國(guó)人習(xí)慣的非晴即雨,預(yù)報(bào)的天氣帶有問(wèn)號(hào),給出下雨的幾率百分比。</p><p> ?、?其他功能:軟件還有的功能就是分享模塊,可以分享到Twitter和Fac
23、ebook。</p><p> ③ CPU內(nèi)存占用:軟件比較小,運(yùn)行過(guò)程中CPU占用14%左右,內(nèi)存占用也很低,不到5M。</p><p><b> 蜜蜂天氣</b></p><p> ?、?天氣顯示面板:蜜蜂天氣雖然沒(méi)有墨跡天氣老牌,但是蜜蜂系列是無(wú)線多媒體軟件的大家族,還包括蜜蜂讀書(shū)、蜜蜂新聞、蜜蜂音樂(lè)、蜜蜂視頻和蜜蜂股票等,所以在新聞
24、資訊方面比較強(qiáng)。天氣界面同樣走的簡(jiǎn)潔精致路線。并且該軟件支持未來(lái)五天天氣預(yù)報(bào)和所在城市的每小時(shí)的準(zhǔn)點(diǎn)詳細(xì)溫度走勢(shì)、風(fēng)向等。</p><p> ?、?其他功能:系統(tǒng)的設(shè)置和信息按鈕出現(xiàn)在所有天氣面板的左、右下角,用戶交互上非常方便。</p><p> ?、?CPU內(nèi)存占用:該軟件再CPU和內(nèi)存占用上控制的還算不錯(cuò)。軟件在沒(méi)有進(jìn)行操作時(shí),CPU占用控制在5%,進(jìn)行刷新天氣等操作時(shí)CPU占用27
25、%,軟件內(nèi)存占用20M左右。</p><p> 1.3 論文研究的內(nèi)容</p><p> 要做一個(gè)用戶體驗(yàn)好并且實(shí)用的天氣查詢軟件,要做到一下幾點(diǎn),同時(shí)也是本論文的主要內(nèi)容:</p><p> 實(shí)現(xiàn)可旋轉(zhuǎn)的菜單界面。</p><p> 運(yùn)用ASIHttpRequest獲取并解析數(shù)據(jù)XML。</p><p>
26、運(yùn)用iOS的frame框架顯示解析后的數(shù)據(jù)。</p><p> 運(yùn)用iOS的畫(huà)圖框架QuartzCore畫(huà)出未來(lái)5天內(nèi)的天氣趨勢(shì)。</p><p> 實(shí)現(xiàn)調(diào)用系統(tǒng)的照相機(jī)并拍照。</p><p> 實(shí)現(xiàn)用Jsonkit工具解析Json數(shù)據(jù)。</p><p> 實(shí)現(xiàn)調(diào)用本地相冊(cè)并將圖片和文字發(fā)送到新浪微博平臺(tái)上。</p>
27、<p> 1.4 論文研究的意義</p><p> 天氣軟件是一種非常實(shí)用的信息服務(wù),隨著智能手機(jī)的不斷普及,各種智能手機(jī)平臺(tái)下都有各種各樣的天氣軟件。用天氣預(yù)報(bào)軟件可以在第一時(shí)間掌握天氣情況,以便提前預(yù)防,把氣象災(zāi)害造成的損失降到最低。同時(shí)也可以強(qiáng)化氣象公共服務(wù)的職能,完善公共服務(wù)體系、改善公共服務(wù)手段、增加公共服務(wù)產(chǎn)品、提高公共服務(wù)質(zhì)量,更好地發(fā)揮了氣象事業(yè)對(duì)經(jīng)濟(jì)社會(huì)發(fā)展的現(xiàn)實(shí)性作用。</
28、p><p> iOS作為現(xiàn)在主流的智能手機(jī)之一,自然也需要這方面的軟件。我們需要額外注意怎么樣設(shè)計(jì)用戶界面(UI)。當(dāng)我們需要設(shè)計(jì)自定義的UI元件時(shí),這些元件用以直接支持我們?cè)O(shè)計(jì)的應(yīng)用程序的交互需要,這個(gè)時(shí)候我們需要尊重原生的Apple iOS控件的習(xí)慣用法[2]。因此,界面設(shè)計(jì)工作對(duì)應(yīng)用程序來(lái)說(shuō)非常重要,在界面上吸引了用戶,才能進(jìn)一步讓用戶體驗(yàn)應(yīng)用程序中的功能,使用這個(gè)軟件。</p><p&g
29、t; 1.5 論文內(nèi)容的安排</p><p> 本文將在以后5章節(jié)中介紹本系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。我們將在第2章分析一下整個(gè)系統(tǒng),包括使用的技術(shù)、開(kāi)發(fā)平臺(tái)、以及項(xiàng)目部署的環(huán)境。</p><p> 第3章,總體介紹一下系統(tǒng)的設(shè)計(jì)思路,包括架構(gòu)的選擇,模塊的劃分,模塊之間如何協(xié)同工作等。</p><p> 第4章,將詳細(xì)介紹各個(gè)模塊的實(shí)現(xiàn)。</p>&l
30、t;p> 第5章,將介紹一下系統(tǒng)的測(cè)試,包括測(cè)試的方法,測(cè)試的結(jié)果,以及使用的工具等。</p><p><b> 2 系統(tǒng)解決方案</b></p><p><b> 2.1 需求分析</b></p><p> 為了開(kāi)發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對(duì)軟件需求的深入理解是軟件開(kāi)發(fā)工作獲
31、得成功的前提條件,不論人們把設(shè)計(jì)和編碼工作做得如何出色,不能真正的滿足用戶需求的程序只會(huì)令用戶失望,給開(kāi)發(fā)者帶來(lái)麻煩。在本節(jié),我們將對(duì)基于iOS的天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)提出完整、準(zhǔn)確、清晰、具體的需求分析,并使用UML2.0用例圖直觀的表示系統(tǒng)各角色所具備的功能。</p><p> 2.1.1 功能需求</p><p> 基于iOS的天氣預(yù)報(bào)查詢系統(tǒng)的主要用途是為可以在第一時(shí)間掌
32、握天氣情況以及未來(lái)5天內(nèi)的天氣情況,可以通過(guò)折線圖更直觀的了解到未來(lái)5天內(nèi)氣溫的趨勢(shì),并且可以用手機(jī)拍下當(dāng)時(shí)的人、物、風(fēng)景等,再通過(guò)本軟件將手機(jī)相冊(cè)內(nèi)的圖片以及自己寫(xiě)下的文字分享到新浪微博平臺(tái)上。用例圖(Use Case Diagram)是由軟件需求分析到最終實(shí)現(xiàn)的第一步,它描述人們希望如何使用一個(gè)系統(tǒng)。</p><p> 系統(tǒng)用例圖如圖2-1所示。</p><p> 圖2-1 系統(tǒng)用
33、例圖</p><p> 天氣查詢用例圖如圖2-2所示。</p><p> 圖2-2 天氣查詢用例圖</p><p> 分享圖片和文字用例圖如圖2-3所示。</p><p> 圖2-3 分享圖片和文字到新浪微博平臺(tái)用例圖</p><p> 天氣預(yù)報(bào)業(yè)務(wù)流程圖如圖2-4所示。</p><p&g
34、t; 圖2-4 天氣預(yù)報(bào)業(yè)務(wù)流程圖</p><p> 分享圖片和文字業(yè)務(wù)流程圖如圖2-3所示。</p><p> 圖2-5 分享圖片和文字業(yè)務(wù)流程圖</p><p> 下面就是本系統(tǒng)的具體功能需求:</p><p><b> 登錄管理</b></p><p> ?、?用戶不需要賬號(hào)即可進(jìn)
35、入本系統(tǒng)。</p><p><b> 地點(diǎn)查詢管理</b></p><p> ?、?用戶能分省、市、縣三級(jí)地級(jí)區(qū)域進(jìn)行查詢;</p><p> ?、?用戶能查詢2400個(gè)以上中國(guó)城市。</p><p><b> 天氣查詢管理</b></p><p> ?、?數(shù)據(jù)每2.5小
36、時(shí)更新一次,準(zhǔn)確可靠;</p><p> ?、?用戶能查詢包括當(dāng)日及未來(lái)5天的天氣情況;</p><p> ?、?用戶能查看到包括當(dāng)日及未來(lái)5天的天氣氣溫趨勢(shì)圖。</p><p><b> 拍攝相片照管理</b></p><p> ① 用戶可以用iPhone手機(jī)自帶的相機(jī)拍攝;</p><p>
37、; ?、?拍攝下的照片會(huì)自動(dòng)保存到iPhone手機(jī)相冊(cè)。</p><p><b> 微博分享管理</b></p><p> ?、?用戶能在iPhone手機(jī)相冊(cè)選取將要分享的圖片;</p><p> ?、?用戶能編寫(xiě)想要分享的文字。</p><p><b> 退出</b></p>&
38、lt;p> ① 用戶點(diǎn)擊Home鍵即可退出程序。</p><p> 2.1.2 可靠性和可用性需求</p><p> 可靠性需求指定系統(tǒng)必須滿足的可靠性,可用性與可靠性密切相關(guān),它量化了用戶可以使用系統(tǒng)的程度?;趇OS的天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的所有數(shù)據(jù)都需要從網(wǎng)上即時(shí)更新以便獲取到最新的天氣數(shù)據(jù),為確保用戶可以隨時(shí)都能查到即時(shí)的天氣情況以及未來(lái)5天內(nèi)的天氣情況,所以在可
39、靠性上必須確保。</p><p> 此系統(tǒng)可靠性應(yīng)達(dá)到以下幾點(diǎn):</p><p> 本系統(tǒng)應(yīng)達(dá)只要有網(wǎng)絡(luò)就可以訪問(wèn)提供數(shù)據(jù)的網(wǎng)站;</p><p> 一個(gè)月內(nèi)系統(tǒng)局部不能出現(xiàn)2次以上故障;</p><p> 每次故障解決時(shí)間不得超過(guò)24小時(shí);</p><p><b> 確保數(shù)據(jù)的準(zhǔn)確性;</b
40、></p><p> 拍攝后的照片一定要存到本地相冊(cè);</p><p> 分享的信息一定要分享在新浪微博平臺(tái)上。</p><p> 可用性應(yīng)達(dá)到以下幾點(diǎn):</p><p> 在任何時(shí)候iPhone或者iTouch至少有一個(gè)該軟件;</p><p> 在一個(gè)月內(nèi)任何一部iPhone或者iTouch上該軟件
41、在運(yùn)行期間不能崩潰2次以上。</p><p> 2.1.3 系統(tǒng)內(nèi)容需求</p><p> 系統(tǒng)開(kāi)發(fā)初期,根據(jù)用戶提出的要求,詳細(xì)了解和分析了用戶需求,確定了系統(tǒng)具有天氣查詢管理和分享管理。天氣查詢管理包括地理查詢、即時(shí)天氣查詢、未來(lái)5天內(nèi)天氣查詢和未來(lái)5天內(nèi)氣溫的趨勢(shì)圖;分享管理包括可以進(jìn)行拍攝照片、分享文字和本地相冊(cè)的圖片等。</p><p> 根據(jù)初期的
42、設(shè)計(jì)思想進(jìn)行分析,從內(nèi)容上對(duì)該系統(tǒng)做如下劃分:</p><p> 菜單:由四個(gè)Button鍵組成并實(shí)現(xiàn)一個(gè)類似轉(zhuǎn)盤電話中撥號(hào)轉(zhuǎn)盤的旋轉(zhuǎn)菜單效果,并用精美的圖片做背景;</p><p> 地點(diǎn)查詢:將2400多個(gè)城市精確的分為省、市、縣三級(jí),并顯示在列表上;</p><p> 天氣查詢:當(dāng)選擇自己想要查看的城市后點(diǎn)擊并進(jìn)入天氣查詢,包括即時(shí)的天氣情況和未來(lái)5天內(nèi)
43、的天氣情況,內(nèi)容帶有文字和圖片并顯示在列表上,并將詳細(xì)信息顯示在單獨(dú)的view里的lable上;</p><p> 天氣趨勢(shì):將未來(lái)5天內(nèi)的最高氣溫和最低氣溫分兩條不同顏色的折線顯示在畫(huà)板上,使用戶更直觀的了解到未來(lái)5天內(nèi)的天氣變化;</p><p> 實(shí)景拍攝:點(diǎn)擊Button鍵后可以調(diào)用手機(jī)自帶的相機(jī)并進(jìn)行拍照,并將拍攝后的照片保存到本地相冊(cè)里;</p><p&
44、gt; 分享:從本地選取喜歡的照片并在textfield上進(jìn)行文字編輯,編輯好后將文字和圖片分享到國(guó)內(nèi)最流行的新浪微博平臺(tái)上,與親朋好友分享自己的照片和心情。</p><p><b> 2.2 技術(shù)架構(gòu)</b></p><p> 2.2.1 Foundation框架簡(jiǎn)介</p><p> 為所有程序開(kāi)發(fā)奠定基礎(chǔ)的框架稱為Foundati
45、on框架。它允許使用一些基本對(duì)象,如數(shù)字和字符串,以及一些對(duì)象集合,如數(shù)組、字典和集合。其他功能包括處理日期和事件、自動(dòng)化的內(nèi)存管理、處理基礎(chǔ)文件系統(tǒng)、存儲(chǔ)(或歸檔)對(duì)象、處理幾何數(shù)據(jù)結(jié)構(gòu)(如點(diǎn)和長(zhǎng)方形)[3]。</p><p> Foundation框架是用Object-C對(duì)Core Foundation框架里許多特性的封裝。使用Foundation可以:</p><p> 創(chuàng)建和管
46、理集合,比如數(shù)組和字典。</p><p> 訪問(wèn)存儲(chǔ)在應(yīng)用程序里的圖片和其它資源。</p><p><b> 創(chuàng)建和管理字符串。</b></p><p><b> 提交和接收通知。</b></p><p> 創(chuàng)建日期和時(shí)間對(duì)象。</p><p> 自動(dòng)發(fā)現(xiàn)IP網(wǎng)絡(luò)上
47、的設(shè)備。</p><p><b> 操作URL流。</b></p><p><b> 執(zhí)行異步代碼。</b></p><p> 2.2.3 UIKit框架簡(jiǎn)介</p><p> UIKit框架是iPhone應(yīng)用程序開(kāi)發(fā)中最基本的框架,也是用得最多、最重要的框架[4]。所有的iOS應(yīng)用程序都基
48、于UIKit,絕對(duì)不能使應(yīng)用程序脫離這個(gè)框架。UIKit提供了在屏幕上繪制的機(jī)制,捕獲事件,和創(chuàng)建通用用戶界面元素。UIKit也通過(guò)管理顯示在屏幕上的組件來(lái)組織復(fù)雜的項(xiàng)目。使用UIKit可以:</p><p> 構(gòu)建和管理用戶界面。</p><p> 捕獲觸摸和基于移動(dòng)的事件。</p><p> 呈現(xiàn)文字和web內(nèi)容。</p><p>
49、<b> 優(yōu)化多任務(wù)程序。</b></p><p> 創(chuàng)建定制的用戶界面元素。</p><p> 2.2.3 ASIHTTPRequest類庫(kù)簡(jiǎn)介</p><p> 使用iOS SDK中的HTTP網(wǎng)絡(luò)請(qǐng)求API,相當(dāng)?shù)膹?fù)雜,調(diào)用很繁瑣。ASIHTTPRequest就是一個(gè)對(duì)CFNetwork API進(jìn)行了封裝,并且使用起來(lái)非常簡(jiǎn)單的一套
50、API,它用Objective-C編寫(xiě),可以很好的應(yīng)用在Mac OS X系統(tǒng)和iOS平臺(tái)的應(yīng)用程序中。ASIHTTPRequest適用于如下基本的HTTP請(qǐng)求:[5]</p><p> 支持通過(guò)代理發(fā)起Http請(qǐng)求。</p><p> 通過(guò)簡(jiǎn)單的接口,即可完成向服務(wù)端提交數(shù)據(jù)和從服務(wù)端獲取數(shù)據(jù)的工作。</p><p> 支持基本、摘要和NTLM身份認(rèn)證,在同一
51、會(huì)話中授權(quán)憑證會(huì)自動(dòng)維持,并且可以存儲(chǔ)在Keychain(Mac和iOS操作系統(tǒng)的密碼管理系統(tǒng))中。</p><p> ASIWebPageRequest –可以下載完整的網(wǎng)頁(yè),包括包含的網(wǎng)頁(yè)、樣式表、腳本等資源文件,并顯示在UIWebView /WebView中。任意大小的頁(yè)面都可以無(wú)限期緩存,這樣即使沒(méi)有網(wǎng)絡(luò)也可以離線瀏覽</p><p> 支持帶寬限制。在iOS平臺(tái),可以根據(jù)當(dāng)前
52、網(wǎng)絡(luò)情況來(lái)自動(dòng)決定是否限制帶寬,例如當(dāng)使用WWAN(GPRS/Edge/3G)網(wǎng)絡(luò)時(shí)限制,而當(dāng)使用WIFI時(shí)不做任何限制。</p><p><b> 支持?jǐn)帱c(diǎn)續(xù)傳。</b></p><p><b> 支持同步和異步請(qǐng)求</b></p><p> 2.2.4 JSONkit類庫(kù)簡(jiǎn)介</p><p&g
53、t; JSONKit是Objective C平臺(tái)上比較常用的JSON數(shù)據(jù)訪問(wèn)工具。JSONKit功能很強(qiáng)大,主要特色如下:</p><p> JSONKit能在運(yùn)行的情況下與libz.dylib自動(dòng)連接而無(wú)須人工連接。</p><p> 在解析期間,如果檢測(cè)到有g(shù)zip文件,JSONKit能自動(dòng)解壓。</p><p> 速度超快,支持之前的iOS版本(但要注
54、意一點(diǎn),從iOS 5開(kāi)始,iOS就已經(jīng)有本地JSON解析工具了)。</p><p> JSONKit的性能遠(yuǎn)優(yōu)于JSON-Framework(即SBJSON),JSONKit使用起來(lái)也非常簡(jiǎn)單,表現(xiàn)性能比蘋(píng)果iOS 5.0中的NSJSONSerialization還要好,速度比NSJSONSerialization快上25%到40%,已經(jīng)是非常大的一個(gè)差距了。</p><p> 2.2
55、.5 MVC設(shè)計(jì)模式簡(jiǎn)介</p><p> MVC設(shè)計(jì)模式是在20世紀(jì)80年代發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用。MVC本身并不是最基本的設(shè)計(jì)模式,它包含了若干更加基本的設(shè)計(jì)模式。在MVC中基本設(shè)計(jì)模式相互配合,確定了各功能之間的協(xié)作,這是MVC應(yīng)用程序的特性[6]。其中MVC是 Model-View-Control 的簡(jiǎn)稱,即模型-視圖-控制器。</p><p> 模型(Mod
56、el):“數(shù)據(jù)模型”(Model)用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對(duì)數(shù)據(jù)的處理方法?!澳P汀庇袑?duì)數(shù)據(jù)直接訪問(wèn)的權(quán)力,例如對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)?!澳P汀辈灰蕾嚒耙晥D”和“控制器”,也就是說(shuō),模型不關(guān)心它會(huì)被如何顯示或是如何被操作。但是模型中數(shù)據(jù)的變化一般會(huì)通過(guò)一種刷新機(jī)制被公布。為了實(shí)現(xiàn)這種機(jī)制,那些用于監(jiān)視此模型的視圖必須事先在此模型上注冊(cè),從而,視圖可以了解在數(shù)據(jù)模型上發(fā)生的改變。</p><p> 視圖
57、(View):視圖層能夠?qū)崿F(xiàn)數(shù)據(jù)有目的的顯示(理論上,這不是必需的)。在視圖中一般沒(méi)有程序上的邏輯。為了實(shí)現(xiàn)視圖上的刷新功能,視圖需要訪問(wèn)它監(jiān)視的數(shù)據(jù)模型(Model),因此應(yīng)該事先在被它監(jiān)視的數(shù)據(jù)那里注冊(cè)。</p><p> 控制器(Controller):控制器起到不同層面間的組織作用,用于控制應(yīng)用程序的流程。它處理事件并作出響應(yīng)。“事件”包括用戶的行為和數(shù)據(jù)模型上的改變。</p><p
58、><b> 2.3 開(kāi)發(fā)平臺(tái)</b></p><p> 2.3.1 iOS開(kāi)發(fā)基本背景簡(jiǎn)介</p><p> iOS介紹:iOS是由蘋(píng)果公司為iPhone等移動(dòng)設(shè)備開(kāi)發(fā)的操作系統(tǒng)。它主要是給iPhone、iPad和iPod touch使用。就像其基于的Mac OS X操作系統(tǒng)一樣,它也是以Darwin為基礎(chǔ)的。iPhone OS的系統(tǒng)架構(gòu)分為四個(gè)層次:核心
59、操作系統(tǒng)層(the Core OS layer),核心服務(wù)層(the Core Services layer),媒體層(the Media layer),可輕觸層(the Cocoa Touch layer)。應(yīng)用程序由Objective-C開(kāi)發(fā)。</p><p><b> 開(kāi)發(fā)工具介紹:</b></p><p> ?、?Xcode:開(kāi)發(fā)iOS應(yīng)用,需要在Mac O
60、S X運(yùn)行Xcode開(kāi)發(fā)工具。Xcode是Apple的開(kāi)發(fā)工具套件,支持項(xiàng)目管理、編輯代碼、構(gòu)建可執(zhí)行程序、代碼級(jí)調(diào)試、代碼的版本管理、性能調(diào)優(yōu)等等。這個(gè)套件的核心是Xcode應(yīng)用本身,它提供了基本的源代碼開(kāi)發(fā)環(huán)境。</p><p> ?、?Interface Builder:利用Interface Builder,可以通過(guò)拖拽組件在程序窗口上進(jìn)行裝配。布置好界面時(shí),將內(nèi)容保存在nib文件中。無(wú)論為哪種平臺(tái)編程,
61、都需要在Interface Builder中花費(fèi)大量的時(shí)間[7]。</p><p> ③ 模擬器:iPhone模擬器可以在Mac中調(diào)試iOS應(yīng)用程序,它的外觀和真實(shí)的iPhone/iPad設(shè)備一模一樣。使用它調(diào)試程序,比在真實(shí)設(shè)備中更方便快捷[8]。模擬器不支持GPS定位、攝像頭、指南針等與硬件關(guān)聯(lián)較大的功能。</p><p> 開(kāi)發(fā)語(yǔ)言介紹:Objective-C是一門面向?qū)ο蟮木幊?/p>
62、語(yǔ)言,是開(kāi)發(fā)iPhone和iPad應(yīng)用的編程語(yǔ)言,也是開(kāi)發(fā)基于Mac操作系統(tǒng)的應(yīng)用程序的編程語(yǔ)言[9]。Objective-C從標(biāo)準(zhǔn)的ANSI C語(yǔ)言擴(kuò)展而來(lái),并提供了定義類、方法和屬性的語(yǔ)法,還有其它結(jié)構(gòu)來(lái)促進(jìn)類的動(dòng)態(tài)擴(kuò)展。</p><p> 2.3.2 iOS開(kāi)發(fā)平臺(tái)搭建</p><p> iOS開(kāi)發(fā)環(huán)境 :Xcode是Apple自己開(kāi)發(fā)的,只運(yùn)行在Mac OS X平臺(tái)下的IDE。
63、使用Xcode來(lái)設(shè)計(jì)程序的邏輯,使用Interface Builder。來(lái)設(shè)計(jì)程序的界面。運(yùn)行Xcode 3.0或以上的版本需要Mac OS 10.5及以上的系統(tǒng)版本。</p><p> iOS軟件開(kāi)發(fā)者證書(shū)介紹:蘋(píng)果的開(kāi)發(fā)工具是免費(fèi)的,但是開(kāi)發(fā)出來(lái)的程序需要在真機(jī)上運(yùn)行或者發(fā)布到AppStore上(越獄的除外),需要購(gòu)買蘋(píng)果的授權(quán)。開(kāi)發(fā)者證書(shū)工具就是Mac開(kāi)發(fā)者計(jì)劃成員申請(qǐng)和下載Mac應(yīng)用程序簽名證書(shū)的工具。
64、購(gòu)買費(fèi)用是99美元。它涉及到蘋(píng)果同意的條款和條件,并要簽署和返回合同。只有注冊(cè)后才能在iPhone上測(cè)試你的程序,而不是在屏幕上的模擬器。</p><p> 運(yùn)行程序:當(dāng)你做好準(zhǔn)備調(diào)試你的application,你首先是通過(guò)Xcode的 Build來(lái)構(gòu)建你的系統(tǒng),如果Build沒(méi)有錯(cuò)誤的話,你有兩種方式可以運(yùn)行你的Application:iPhone Simulator 和 Device iPhone。<
65、/p><p><b> 3 系統(tǒng)總體設(shè)計(jì)</b></p><p> 3.1 系統(tǒng)模塊劃分</p><p> 根據(jù)初期的設(shè)計(jì)思想和需求分析的結(jié)果,根據(jù)本平臺(tái)要達(dá)到的功能要求,本系統(tǒng)大致可以抽象為菜單模塊、天氣查詢模塊和分享模塊。</p><p> 3.1.1 菜單模塊</p><p> 菜單模
66、塊需要實(shí)現(xiàn)的是一個(gè)類似經(jīng)典的轉(zhuǎn)盤電話中撥號(hào)轉(zhuǎn)盤的旋轉(zhuǎn)菜單效果?;瑒?dòng)菜單,菜單進(jìn)行轉(zhuǎn)動(dòng),轉(zhuǎn)動(dòng)的過(guò)程中,處于最前面的按鈕按鈕慢慢變大,處于后端的按鈕變小。同樣,點(diǎn)擊轉(zhuǎn)盤菜單上某個(gè)按鈕,被點(diǎn)擊的按鈕會(huì)慢慢被轉(zhuǎn)到最前面。由于轉(zhuǎn)動(dòng)的過(guò)程中,按鈕會(huì)由大變小或者由小變大,所以這個(gè)動(dòng)畫(huà)有3D的效果。菜單模塊效果圖如圖3-1所示。</p><p> 圖3-1 菜單模塊效果圖</p><p> 3.1.2
67、 天氣查詢模塊</p><p> 天氣查詢模塊是本系統(tǒng)的重點(diǎn),該模塊需要實(shí)現(xiàn)地理位置查詢、天氣查詢以及折線圖。此模塊主要負(fù)責(zé)用Post方法向服務(wù)器發(fā)送請(qǐng)求并將獲取到的Xml數(shù)據(jù)進(jìn)行解析,將解析到的數(shù)據(jù)加載到創(chuàng)建好的列表上。折線圖則是利用iOS中比較復(fù)雜的畫(huà)板顯示,通過(guò)獲取到的未來(lái)5天內(nèi)的氣溫變化以折線形式顯示在畫(huà)板上,可以方便用戶更直觀的了解到未來(lái)的天氣變化。此模塊采用POST方法獲取數(shù)據(jù)而不是采用GET方法是
68、因?yàn)镚ET一般用于獲取/查詢 資源信息,而POST一般用于更新資源信息。 再進(jìn)一步了解下他們兩個(gè)的區(qū)別:</p><p> GET使用URL或Cookie傳參。而POST將數(shù)據(jù)放在BODY中。</p><p> GET的URL會(huì)有長(zhǎng)度上的限制,則POST的數(shù)據(jù)則可以非常大。</p><p> POST比GET安全,因?yàn)閿?shù)據(jù)在地址欄上不可見(jiàn)。</p>
69、<p> 3.1.3 分享模塊</p><p> 分享模塊是本系統(tǒng)的一個(gè)吸引用戶的亮點(diǎn),因?yàn)樵撃K選用了新浪微博平臺(tái)。眾所周知隨著互聯(lián)網(wǎng)的迅猛發(fā)展,微博客已經(jīng)形成信息傳播的主流,在國(guó)外最流行的微博客Twitter,而在國(guó)內(nèi)新浪微博率先進(jìn)入了市場(chǎng),并取得了非常大的成功,而在用戶量上也早已經(jīng)突破3億。雖然目前騰訊微博也在迅猛的發(fā)展并搶占市場(chǎng),但在微博客的世界中新浪依然占據(jù)老大的位置,無(wú)可撼動(dòng)。下面分
70、析下本系統(tǒng)使用新浪微博的好處。</p><p> 能夠快速大范圍的傳播信息。不用長(zhǎng)篇大論節(jié)省時(shí)間,內(nèi)容可以是現(xiàn)場(chǎng)記錄,最新曝料,發(fā)感慨,曬心情,還可以分享自己的照片。</p><p> 用戶可以通過(guò)手機(jī)隨時(shí)隨地發(fā)布相關(guān)消息,可以即寫(xiě)即發(fā),即拍即發(fā)。</p><p> 新浪微博平臺(tái)的用戶基數(shù)比較大,所以用戶在這里可以與更多的人分享自己的微博。</p>
71、<p> 3.2 系統(tǒng)總體結(jié)構(gòu)</p><p> 基于iOS的天氣預(yù)報(bào)查詢的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)是一款比較實(shí)用的手機(jī)軟件,系統(tǒng)設(shè)計(jì)包括技術(shù)和組織兩個(gè)方面內(nèi)容。先從技術(shù)角度看,系統(tǒng)設(shè)計(jì)必須有良好的運(yùn)作機(jī)制、信息流程等;再?gòu)慕M織角度出發(fā),便捷、時(shí)尚的天氣預(yù)報(bào)查詢應(yīng)該更有吸引人的魅力。本節(jié)我們將介紹一下系統(tǒng)的總體結(jié)構(gòu)。</p><p> 3.2.1 系統(tǒng)模塊協(xié)作關(guān)系</p&g
72、t;<p> 以技術(shù)角度看,本系統(tǒng)的3個(gè)模塊互相協(xié)作,最終構(gòu)建出一個(gè)基于iOS的天氣預(yù)報(bào)查詢的應(yīng)用軟件。整個(gè)系統(tǒng)以菜單模塊為核心,天氣查詢模塊負(fù)責(zé)顯示天氣情況,分享模塊負(fù)責(zé)分享文字和圖片到新浪微博平臺(tái)。</p><p> 3.2.2 系統(tǒng)啟動(dòng)流程</p><p> 本系統(tǒng)將所有功能模塊化,啟動(dòng)期間會(huì)順序加載模塊,并自動(dòng)運(yùn)行模塊的初始化代碼。初始化完所有模塊后再運(yùn)行系統(tǒng)其
73、他核心初始化代碼。系統(tǒng)啟動(dòng)流程如圖3-2所示。</p><p> 圖3-2 系統(tǒng)啟動(dòng)流程</p><p> 3.2.3 系統(tǒng)內(nèi)容結(jié)構(gòu)組織</p><p> 基于iOS的天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)主要內(nèi)容包括地點(diǎn)查詢、天氣查詢、折線圖、實(shí)景拍攝和分享。不但可以讓用戶更方便快捷的了解天氣情況,還可以走在時(shí)尚的前沿進(jìn)行發(fā)微博,與親朋好友共同分享自己的周邊的人、事、
74、物以及自己的心情和狀態(tài)。基于這些必須達(dá)到的功能需求,本系統(tǒng)的系統(tǒng)內(nèi)容結(jié)構(gòu)圖如圖3-3所示。</p><p> 圖3-3 系統(tǒng)內(nèi)容結(jié)構(gòu)圖</p><p><b> 4 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p> 經(jīng)過(guò)前期的需求分析、總體設(shè)計(jì),已經(jīng)為詳細(xì)設(shè)計(jì)做好了準(zhǔn)備。本章將描述所有模塊的具體設(shè)計(jì)與實(shí)現(xiàn),部分列出關(guān)鍵代碼。</p>
75、<p> 本系統(tǒng)采用的是UINavigationController管理UIViewController,即用戶可以從上一層界面進(jìn)入下一層界面,在下一層界面處理完成以后又可以簡(jiǎn)單地返回到上一層界面,UINavigationController使用堆棧的方式來(lái)管理UIViewController[10]。 </p><p><b> 4.1 菜單模塊</b></p>
76、<p> 4.1.1 菜單模塊的主要功能</p><p> 菜單模塊是程序的入口,也是用戶第一眼所能看到的界面,所以一個(gè)軟件是否能夠吸引用戶并留住用戶,菜單的設(shè)計(jì)至關(guān)重要。傳統(tǒng)的菜單基本都是靜態(tài)界面上布滿一些靜態(tài)的Button鍵或直接就是一個(gè)列表供用戶選則,而本系統(tǒng)的菜單模塊采用的則是經(jīng)過(guò)動(dòng)畫(huà)處理后的動(dòng)態(tài)界面,這樣用戶用起來(lái)會(huì)有一種全新的體驗(yàn)。菜單界面的每個(gè)按鈕都對(duì)應(yīng)一個(gè)進(jìn)程的入口,當(dāng)點(diǎn)擊不同的B
77、utton時(shí)會(huì)進(jìn)入不同的模塊并執(zhí)行該模塊的程序。</p><p> 4.1.2 菜單模塊的UI布局</p><p> 手機(jī)軟件菜單的UI布局大體分為兩種:第一種是在一個(gè)view上放置一些能進(jìn)入下一級(jí)的Button;第二種則是列表形式,通過(guò)點(diǎn)擊不同的cell進(jìn)入對(duì)應(yīng)的下一級(jí)界面。但是列表形式的界面最大的缺點(diǎn)就是不夠靈活,所以本系統(tǒng)采用比較靈活的第一種布局方式。在view上設(shè)置一個(gè)大的背景
78、圖片,在每個(gè)Button上設(shè)置不同的背景圖片,并將Button存入數(shù)組里。</p><p> 4.1.3 菜單模塊的動(dòng)畫(huà)效果實(shí)現(xiàn)</p><p> 隨著移動(dòng)互聯(lián)網(wǎng)迅猛的發(fā)展,產(chǎn)品重點(diǎn)也漸漸的由UI變成UE,而動(dòng)畫(huà)效果則可以很好的解決UE的問(wèn)題。動(dòng)畫(huà)效果提供了狀態(tài)或頁(yè)面轉(zhuǎn)換時(shí)流暢的用戶體驗(yàn),在iOS系統(tǒng)中Core Animation提供了豐富的API來(lái)實(shí)現(xiàn)需要的動(dòng)畫(huà)效果。</p&g
79、t;<p> 本系統(tǒng)實(shí)現(xiàn)的動(dòng)畫(huà)效果主要分為將控件連成一個(gè)圓、在Button按鈕移動(dòng)到后邊時(shí)按鈕要縮放并且點(diǎn)擊不同按鈕進(jìn)入相對(duì)應(yīng)的下一級(jí)界面。實(shí)現(xiàn)后的菜單效果圖如圖4-1所示。</p><p> 圖4-1 菜單效果圖</p><p> 4.2 天氣查詢模塊</p><p> 4.2.1用POST方法進(jìn)行請(qǐng)求數(shù)據(jù) </p><p
80、> 在iOS中向網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)或者發(fā)送數(shù)據(jù)一般分為POST方法和GET方法兩種(兩種方法的區(qū)別見(jiàn)第三章),本系統(tǒng)的天氣查詢模塊采用的是POST方法向網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)。本系統(tǒng)采用了比較常用的第三方庫(kù)ASIHttpRequest進(jìn)行數(shù)據(jù)請(qǐng)求。ASIHttpRequest用起來(lái)非常方便,主要實(shí)現(xiàn)里邊的幾個(gè)代理方法即可進(jìn)行數(shù)據(jù)請(qǐng)求。首先要繼承ASIHttpRequest的代理ASIHTTPRequestDelegate,然后在實(shí)現(xiàn)其代理方法。
81、</p><p> 4.2.2處理請(qǐng)求到的數(shù)據(jù) </p><p> 因?yàn)檎?qǐng)求到的數(shù)據(jù)是XML數(shù)據(jù),所以要想解析數(shù)據(jù)只能用解析XML數(shù)據(jù)的方法解析。本系統(tǒng)是通過(guò)NSXMLParser解析XML數(shù)據(jù)。NSXMLParser實(shí)例會(huì)逐行讀取傳入的XML數(shù)據(jù),發(fā)現(xiàn)特定的信息后會(huì)向自己的委托對(duì)象發(fā)送消息,例如,找到了新的元素標(biāo)記或找到了位于元素內(nèi)的字符串。NSXMLParser實(shí)例的委托對(duì)象需要根
82、據(jù)應(yīng)用上下文處理這些消息[11]。</p><p> 本系統(tǒng)還設(shè)計(jì)了加載齒輪效果,當(dāng)獲取并解析數(shù)據(jù)的時(shí)候屏幕中間會(huì)有加載齒輪在轉(zhuǎn)動(dòng),同時(shí)用戶不能進(jìn)行操作。當(dāng)解析后的數(shù)據(jù)加載到布置好的界面后加載齒輪停止轉(zhuǎn)動(dòng),此時(shí)用戶可以對(duì)系統(tǒng)進(jìn)行操作。</p><p> 4.2.3模塊功能實(shí)現(xiàn)及效果圖 </p><p> 因?yàn)楸鞠到y(tǒng)設(shè)計(jì)的是用戶需要先進(jìn)行地理位置查詢?nèi)缓笤龠M(jìn)行天
83、氣查詢,所以當(dāng)用戶點(diǎn)擊查詢天氣的按鈕時(shí)會(huì)先進(jìn)入到地理位置查詢的界面。地理位置查詢主要有兩個(gè)界面,一個(gè)是先按省查詢,當(dāng)用戶選擇好省份后點(diǎn)擊cell會(huì)跳入到市、縣級(jí)城市查詢界面。具體效果圖如下:</p><p> 按省級(jí)查詢效果圖如圖4-2所示。</p><p> 圖4-2 按省級(jí)查詢效果圖</p><p> 按市、縣級(jí)城市查詢效果圖如圖4-3所示。</p&
84、gt;<p> 圖4-3 按市、縣級(jí)城市查詢效果圖</p><p> 當(dāng)用戶選好想要查詢的城市后會(huì)進(jìn)入到天氣查詢界面。天氣查詢界面是用列表形式顯示的,其中包括當(dāng)日天氣情況、未來(lái)5天內(nèi)的天氣情況以及溫馨提示等內(nèi)容。當(dāng)用戶點(diǎn)擊第二個(gè)cell時(shí)會(huì)進(jìn)入到“天氣詳情”界面;當(dāng)用戶點(diǎn)擊第四個(gè)cell時(shí)會(huì)進(jìn)入到“溫馨提示”界面。具體效果圖如下: </p><p> 天氣查詢效果圖如圖
85、4-4所示。</p><p> 圖4-4 天氣查詢效果圖</p><p> 天氣詳情效果圖如圖4-5所示。</p><p> 圖4-5 天氣詳情效果圖</p><p> 溫馨提示效果圖如圖4-6所示。</p><p> 圖4-6 溫馨提示效果圖</p><p> 4.2.3創(chuàng)建畫(huà)板并
86、畫(huà)折線圖 </p><p> 一個(gè)好的天氣預(yù)報(bào)應(yīng)用軟件一定要有折線圖這部分來(lái)更直觀的顯示出未來(lái)天氣氣溫的變化以方便用戶更清晰的了解到天氣變化的信息。本系統(tǒng)同樣也選取了這個(gè)功能并實(shí)現(xiàn)了折線圖。當(dāng)用戶在天氣查詢界面點(diǎn)擊右上角的“趨勢(shì)”按鈕時(shí)會(huì)進(jìn)入到“五天內(nèi)天氣變化趨勢(shì)”界面,這個(gè)界面是個(gè)折線圖,可以讓用戶更直觀的了解到未來(lái)5天內(nèi)的氣溫變化。趨勢(shì)圖里共有兩條折線:紅顏色的線代表一天內(nèi)的最高氣溫;黑顏色的折線代表一天內(nèi)
87、的最低氣溫。趨勢(shì)圖的橫坐標(biāo)帶顯示對(duì)應(yīng)的日期,縱坐標(biāo)顯示的溫度段。具體效果圖如下:</p><p> 五天內(nèi)天氣變化趨勢(shì)效果圖如圖4-7所示。</p><p> 圖4-7 溫馨提示效果圖</p><p><b> 4.3 分享模塊</b></p><p> 4.3.1實(shí)景拍攝 </p><p&g
88、t; iPhone、iPad和iPod touch提供了內(nèi)置照相機(jī)和Photos應(yīng)用程序,這在現(xiàn)在已經(jīng)不足為奇。但鮮為人知的是,用戶不但可以使用內(nèi)置照相機(jī)拍攝照片,還可以從這些設(shè)備的照片庫(kù)中選擇照片[12]。</p><p> 蘋(píng)果手機(jī)自iPhone4開(kāi)始內(nèi)置的照相機(jī)像素就已經(jīng)達(dá)到500W,但卻相當(dāng)于其他手機(jī)的800W,這也是蘋(píng)果手機(jī)吸引用戶的原因之一。無(wú)論是在大街上、沙灘上、校園里甚者飯館和公交車上都能看到
89、有人拿著手機(jī)在拍附近的景物或者自拍,由此可見(jiàn)用戶對(duì)手機(jī)相機(jī)的喜愛(ài)程度。目前也有很多應(yīng)用軟件開(kāi)始注意到這一點(diǎn)并開(kāi)始拓展新的模塊用來(lái)方便用戶,天氣預(yù)報(bào)的應(yīng)用軟件也不例外,如墨跡天氣的“實(shí)景拍攝”功能模塊,并有自己的服務(wù)器用來(lái)方便用戶分享自己拍攝的照片。</p><p> 當(dāng)用戶在菜單界面點(diǎn)擊分享的按鈕會(huì)進(jìn)入到分享模塊。分享模塊的第一個(gè)界面“實(shí)景拍攝”界面,用來(lái)簡(jiǎn)單的告訴用戶這個(gè)某塊的功能,里邊共有兩個(gè)按鈕,分別是“
90、拍個(gè)照”和“分享下”。實(shí)景拍攝效果圖如圖4-8所示。</p><p> 圖4-8 實(shí)景拍攝效果圖</p><p> 4.3.2調(diào)用本地相機(jī) </p><p> 本系統(tǒng)的分享模塊需要實(shí)現(xiàn)調(diào)用本地相機(jī)的功能,iOS系統(tǒng)自帶一種調(diào)用本地相機(jī)的方法,首先要繼承代理方法UIImagePickerControllerDelegate,并在.m文件實(shí)現(xiàn)該代理方法。首先要進(jìn)行
91、判斷設(shè)備是否支持相機(jī),如果不支持將會(huì)彈出一個(gè)警告(如子在模擬器上運(yùn)行該軟件),如果支持則會(huì)調(diào)出本地相機(jī)。當(dāng)用戶點(diǎn)擊“拍個(gè)照”按鈕時(shí)會(huì)調(diào)用本地相機(jī)進(jìn)行拍照,調(diào)出本地相機(jī)效果圖如圖4-9所示。</p><p> 圖4-9 實(shí)景拍攝效果圖</p><p> 4.3.2調(diào)用OAuth認(rèn)證 </p><p> 新浪微博為了維護(hù)用戶的隱私權(quán),在第三方軟件調(diào)用新浪微博的接口
92、時(shí)需要調(diào)用OAuth認(rèn)證,當(dāng)認(rèn)證通過(guò)后用戶方可調(diào)用新浪微博的接口,這樣做的好處是可以防止第三方軟件竊取用戶的信息。</p><p> 為了使用新浪微博開(kāi)放平臺(tái)提供的API(應(yīng)用程序接口),需要先注冊(cè)一個(gè)應(yīng)用。從而得到一個(gè)專屬的App Key和App Secret。Key跟Secret的使用方式跟其他一些協(xié)議中的公鑰私鑰的方案相類似,可以使用自己所熟悉的編程語(yǔ)言將key和secret結(jié)合,為自己發(fā)出的每個(gè)請(qǐng)求添加
93、簽名,以此來(lái)向新浪微博開(kāi)放平臺(tái)表明自己身份的合法性。</p><p> 所有的OAuth請(qǐng)求使用同樣的算法來(lái)生成(signature base string)簽名字符基串和簽名。base string是把http方法名,請(qǐng)求URL以及請(qǐng)求參數(shù)用&字符連起來(lái)后做URL Encode編碼。具體來(lái)講,base string由http方法名,之后是&,接著是過(guò)url編碼(url-encoded)之后的u
94、rl和訪問(wèn)路徑及&。接下來(lái),把所有的請(qǐng)求參數(shù)包括POST方法體中的參數(shù),經(jīng)過(guò)排序(按參數(shù)名進(jìn)行文本排序,如果參數(shù)名有重復(fù)則再安參數(shù)值進(jìn)行重復(fù)項(xiàng)目排序),使用%3D替代=號(hào),并且使用%26作為每個(gè)參數(shù)之間的分隔符,拼接成一個(gè)字符串。</p><p> 請(qǐng)求簽名:所有的OAuth請(qǐng)求使用同樣的算法來(lái)生成(signature base string)簽名字符基串和簽名。base string是把http方法名
95、,請(qǐng)求URL以及請(qǐng)求參數(shù)用&字符連起來(lái)后做URL Encode編碼。具體來(lái)講,base string由http方法名,之后是&,接著是過(guò)url編碼(url-encoded)之后的url和訪問(wèn)路徑及&。接下來(lái),把所有的請(qǐng)求參數(shù)包括POST方法體中的參數(shù),經(jīng)過(guò)排序(按參數(shù)名進(jìn)行文本排序,如果參數(shù)名有重復(fù)則再安參數(shù)值進(jìn)行重復(fù)項(xiàng)目排序),使用%3D替代=號(hào),并且使用%26作為每個(gè)參數(shù)之間的分隔符,拼接成一個(gè)字符串。這個(gè)算
96、法可以簡(jiǎn)單表示為:</p><p> httpMethod + "&" + url_encode( base_uri ) + "&" + sorted_query_params.each { | k, v | url_encode ( k ) + "%3D" + url_encode ( v )
97、}.join("%26")</p><p> 無(wú)論生成何種OAuth1.0請(qǐng)求,生成BASE STRING的規(guī)則始終不變。新浪微博要求所有的OAuth請(qǐng)求都使用HMAC-SHA1算法生成簽名。</p><p> 獲取request token:獲取request token是進(jìn)行用戶認(rèn)證的第一步。這一步主要有兩個(gè)目的:第一,告訴新浪微博你將要做什么;第二,告訴新浪微
98、博你在callback里要做什么。下面舉個(gè)例子,以下是請(qǐng)求用的參數(shù):</p><p> consumer secret - "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98" oauth_callback - http://localhost:3005/the_dance/process_callback?service_provider_id=11
99、oauth_consumer_key - GDdmIQH6jhtmLUypg82g oauth_nonce - QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk oauth_signature_method - HMAC-SHA1 oauth_timestamp - 1272323042 oauth_version - 1.0</p><p> 用上文提到的算法形成BASE
100、 STRING。需要注意的是callback在URL中包含請(qǐng)求參數(shù),由于參數(shù)只CALLBACK URL的一部分,所以并不需要將其提出成為獨(dú)立的參數(shù)。 URL必須按照單個(gè)字符串來(lái)考慮。</p><p> 由于我們還未獲取到oauth_token和oauth_token_secret,所以我們的BASE STRING里沒(méi)有包含oauth_token和oauth_token_secret。當(dāng)服務(wù)器端接到請(qǐng)求之后,會(huì)返
101、回包含oauth_token,oauth_token_secret等內(nèi)容,另外oauth_callback_confirmed字段如果為true就表示callback生效。</p><p> 用戶認(rèn)證這一步主要是發(fā)送你獲取的oauth_token,并且獲得用戶的授權(quán)。一般來(lái)說(shuō),WEB應(yīng)用會(huì)簡(jiǎn)單的重定向到相應(yīng)的頁(yè)面,桌面應(yīng)用程序會(huì)給出URL并要求用戶自行驗(yàn)證。如果用戶沒(méi)有登錄新浪微博,則會(huì)要求用戶登錄。否則將會(huì)出
102、現(xiàn)一個(gè)頁(yè)面,用戶可以在此頁(yè)面上一鍵同意或者拒絕對(duì)此應(yīng)用授權(quán)。用戶授權(quán)后,web應(yīng)用頁(yè)面將會(huì)重定向至你指定的回調(diào)界面。</p><p> 當(dāng)用戶點(diǎn)擊“分享下”按鈕時(shí)用戶會(huì)進(jìn)入到微博分享的部分。進(jìn)入微博分享部分時(shí)如果用戶沒(méi)有登錄授權(quán)系統(tǒng)會(huì)調(diào)出授權(quán)方法并彈出授權(quán)界面,OAuth認(rèn)證效果圖如圖4-10所示。</p><p> 圖4-10 OAuth認(rèn)證效果圖</p><p&
103、gt; 4.3.3向發(fā)微博接口發(fā)送請(qǐng)求</p><p> 當(dāng)獲取到access token后,應(yīng)用就可以調(diào)用新浪微博的接口并實(shí)現(xiàn)發(fā)微博等操作。新浪微博的接口共有二百多個(gè),就算是官方微博也沒(méi)有實(shí)現(xiàn)全部的接口,而新浪微博的接口都是開(kāi)放的,除了少數(shù)的高級(jí)接口需要權(quán)限外大部分接口都是免費(fèi)供開(kāi)發(fā)者使用。由于本系統(tǒng)只需實(shí)現(xiàn)新浪微博的發(fā)微博的接口,所以只需請(qǐng)求發(fā)微博的接口便可。</p><p>
104、新浪微博所有的數(shù)據(jù)都是用JSON格式寫(xiě)的,并且發(fā)微博接口的HTTP請(qǐng)求方式是POST,在上一節(jié)以及第三章已經(jīng)介紹過(guò)POST請(qǐng)求方式和POST請(qǐng)求方式與GET請(qǐng)求方式的區(qū)別,所以在次就不作詳細(xì)的介紹了。新浪微博對(duì)用戶發(fā)微博有兩條限制:1、連續(xù)兩次發(fā)布的微博不可以重復(fù);2、非會(huì)員發(fā)表定向微博,分組成員數(shù)最多200。</p><p> 當(dāng)用戶輸入完新浪微博的賬號(hào)和密碼并點(diǎn)擊“登錄”按鈕時(shí)會(huì)進(jìn)入到“新浪微博分享”的編輯
105、界面。當(dāng)用戶點(diǎn)擊編輯界面的“相冊(cè)”按鈕時(shí)會(huì)自動(dòng)彈出本地相冊(cè)進(jìn)行圖片選取,選好后用戶可以在文本編輯的地方寫(xiě)文字。當(dāng)編輯好要分享的文字內(nèi)容和圖片后點(diǎn)擊右上角的“發(fā)送”按鈕就會(huì)將用戶編輯好的內(nèi)容分享到新浪微博的平臺(tái)上并跳轉(zhuǎn)回到到“實(shí)景拍攝”的界面。如果分享成功了會(huì)彈出個(gè)Alert并提示用戶分享成功,如果不成功這會(huì)彈出Alert告訴用戶分享失敗。具體效果圖如下:</p><p> 內(nèi)容編輯效果圖如圖4-11所示。<
106、;/p><p> 圖4-11容編輯效果圖</p><p> 內(nèi)容編輯后效果圖如圖4-12所示。</p><p> 圖4-12內(nèi)容編輯后效果圖</p><p> 分享成功效果圖如圖4-13所示。</p><p> 圖4-13分享成功效果圖</p><p> 4.3.4用JSONKit處理數(shù)
107、據(jù)</p><p> 新浪微博里所有的數(shù)據(jù)都是采用JSON格式寫(xiě)的,所以當(dāng)返回?cái)?shù)據(jù)后需要要JSON的數(shù)據(jù)解析工具進(jìn)行解析。目前有很多JSON數(shù)據(jù)解析工具,最流行的有SBJSON和JSONKit,在iOS5后蘋(píng)果公司也推出了NSJson方法用于解析JSON格式的數(shù)據(jù),這幾種解析工具間的區(qū)別在第三章也詳細(xì)介紹過(guò)。本系統(tǒng)采用的則是效率更高的JSONKit解析工具,在處理返回的數(shù)據(jù)是調(diào)用里邊的方法即可實(shí)現(xiàn)數(shù)據(jù)解析。&l
108、t;/p><p> 4.4 關(guān)于和幫助模塊</p><p> 4.4.1“關(guān)于”界面的設(shè)計(jì)及實(shí)現(xiàn)</p><p> 點(diǎn)擊菜單中帶有感嘆號(hào)圖片的按鈕會(huì)進(jìn)入到“關(guān)于”的界面,用來(lái)介紹該系統(tǒng)的作者及聯(lián)系方式。這個(gè)界面的主題采用的暖色調(diào),讓用戶看起來(lái)不會(huì)感覺(jué)到視覺(jué)疲勞。界面中采用兩個(gè)具有代表性的圖片用于顯示聯(lián)系的工具,并在后邊的label上填寫(xiě)作者的聯(lián)系方式。關(guān)于效果圖如
109、圖4-14所示。</p><p> 圖4-14關(guān)于效果圖</p><p> 4.4.2“幫助”界面的設(shè)計(jì)及實(shí)現(xiàn)</p><p> 點(diǎn)擊菜單中帶有問(wèn)號(hào)圖片的按鈕會(huì)進(jìn)入到“幫助”的界面,助界面是幫助用戶了解系統(tǒng)的功能以及操作步驟。本系統(tǒng)的幫助界面是借鑒“墨跡天氣”軟件的幫助界面樣式。先設(shè)問(wèn)并在下邊作答,并且問(wèn)題的label背景突出方便于用戶區(qū)分問(wèn)題和答案。幫助效果
110、圖如圖4-15所示。</p><p> 圖4-15幫助效果圖</p><p><b> 5系統(tǒng)測(cè)試</b></p><p> 在進(jìn)行軟件開(kāi)發(fā)的過(guò)程中,避免不了出現(xiàn)錯(cuò)誤或未發(fā)現(xiàn)的Bug,這些錯(cuò)誤和Bug發(fā)現(xiàn)得越早,對(duì)后面的開(kāi)發(fā)和維護(hù)越有利,因此軟件測(cè)試是必不可少的步驟。軟件測(cè)試的方案通常由好多種,但都各有利弊。合適的軟件測(cè)試方案是:既要保證
111、對(duì)軟件開(kāi)發(fā)進(jìn)度有一定程度的控制,又要在工程開(kāi)銷許可的范圍內(nèi)進(jìn)行一定程度的檢查,以確保產(chǎn)品確實(shí)能夠正常運(yùn)行。這種平衡應(yīng)該著眼于將所發(fā)行產(chǎn)品的運(yùn)行風(fēng)險(xiǎn)降低到一個(gè)可以接受的水平上。所以說(shuō),“最具風(fēng)險(xiǎn)的組件”,也就是那些對(duì)于軟件的運(yùn)行至關(guān)重要的組件或者那些最有可能隱藏bug的組件,應(yīng)當(dāng)首先測(cè)試,然后測(cè)試那些風(fēng)險(xiǎn)稍低的組件,依次測(cè)試,直到你覺(jué)得所有剩下的風(fēng)險(xiǎn)因素都不值得再投入時(shí)間和資金去測(cè)試為止[13]。</p><p>
112、<b> 5.1 單元測(cè)試</b></p><p> 每一個(gè)單元測(cè)試用例對(duì)應(yīng)于測(cè)試類中的一個(gè)方法,因此測(cè)試類分為:邏輯測(cè)試類和應(yīng)用測(cè)試類,在設(shè)計(jì)測(cè)試用例時(shí)候,邏輯測(cè)試和應(yīng)用測(cè)試也是不同的。編寫(xiě) OCUnit測(cè)試方法也是要分邏輯測(cè)試和應(yīng)用測(cè)試。原則上,是否使用測(cè)試框架都不會(huì)影響單元測(cè)試結(jié)果,但是“工欲善其事,必先利其器”使用單元測(cè)試框架更便于我們測(cè)試和分析結(jié)果。主要的iOS單元測(cè)試框架有:
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 軟件工程畢業(yè)論文-基于android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)
- 基于android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 基于android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)--畢業(yè)設(shè)計(jì)
- 基于android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)
- 畢業(yè)論文——手機(jī)天氣預(yù)報(bào)系統(tǒng)
- 手機(jī)天氣預(yù)報(bào)系統(tǒng)畢業(yè)論文
- 畢業(yè)論文——手機(jī)天氣預(yù)報(bào)系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于Windows Mobile手機(jī)天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- android平臺(tái)天氣預(yù)報(bào)widget的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- android平臺(tái)天氣預(yù)報(bào)widget的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文——手機(jī)天氣預(yù)報(bào)系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于android系統(tǒng)的天氣預(yù)報(bào)查詢系統(tǒng)
- 基于android的天氣預(yù)報(bào)短信系統(tǒng)的畢業(yè)設(shè)計(jì)說(shuō)明書(shū)
- android平臺(tái)天氣預(yù)報(bào)軟件設(shè)計(jì)與實(shí)現(xiàn) 畢業(yè)論文
- 基于android平臺(tái)的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)畢業(yè)論文
- 淺析基于android的天氣預(yù)報(bào)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(論文原稿)
- 基于Android手機(jī)的天氣預(yù)報(bào)查詢系統(tǒng).pdf
- 基于android系統(tǒng)天氣預(yù)報(bào)應(yīng)用程序畢業(yè)論文
- 基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論