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