常雄+劉卓+崔忠偉+王禮琴+陳盼+黃茂+胡畢松
摘要:隨著科技和無線應(yīng)用產(chǎn)業(yè)不斷地發(fā)展,手機(jī)也開始被越來越多的人使用。如今,人們已經(jīng)進(jìn)入了移動互聯(lián)的時代,手機(jī)正在慢慢改變著人們的生活方式?,F(xiàn)在的智能手機(jī)可以提供人們安裝軟件、游戲、上網(wǎng)等第三方服務(wù)上提供的功能。因此,人們使用無線應(yīng)用軟件(APP),為手機(jī)用戶提供旅游資訊服務(wù),實(shí)現(xiàn)了游客便捷旅游的夢想。自動導(dǎo)航、定位搜索、酒店和景點(diǎn)等信息的查詢等功能,讓用戶實(shí)實(shí)在在的體驗(yàn)到它的帶來的方便。該文是基于iOS移動開發(fā)平臺,采用Objective-C語言,設(shè)計的旅游服務(wù)的APP。
關(guān)鍵詞:iOS;Objective-C;ASIHTTPRequest;地圖導(dǎo)覽
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)15-0078-03
1 緒論
1.1項(xiàng)目背景及意義
智能手機(jī)的出現(xiàn)也帶動了很多行業(yè)的發(fā)展,其中旅游行也受到了巨大的影響。
隨著人們生活水平的提高,現(xiàn)在旅游消費(fèi)的人也越來越多,這也帶動了中國很多景區(qū)的發(fā)展。貴州作為一個旅游大省,擁有的旅游資源數(shù)量多、類型齊的特點(diǎn),如今世界目前已設(shè)計的15種自然旅游資源中,它的地質(zhì)、地層是全國最全的,環(huán)境的多樣、風(fēng)景的獨(dú)特性、氣候的宜人性、資源的豐富性、民族風(fēng)情的多彩性等特征,使得他有很大的可持續(xù)發(fā)展的潛力。隨著政府對旅游行業(yè)的重視,未來貴州的旅游業(yè)將會得到快速的發(fā)展。
隨著智能手機(jī)的普及,越來越多的人在使用和消費(fèi)手機(jī)。近些年我國移動互聯(lián)和智能終端的快速發(fā)展也帶動了大量的用戶使用智能手機(jī)和其他的移動設(shè)備。2012年我國的網(wǎng)民增加量為5000萬,達(dá)到了5.5億,其中手機(jī)網(wǎng)民就有3.88億,網(wǎng)購人數(shù)有2.1億。
目前中國智能手機(jī)行業(yè)品牌繁多,比如三星、蘋果就占據(jù)著我國智能手機(jī)大部分的份額,其中蘋果依靠時尚的產(chǎn)品設(shè)計、良好的用戶體驗(yàn)具有完美構(gòu)架的iOS系統(tǒng)吸引著大批的中國消費(fèi)者。據(jù)研究機(jī)構(gòu)UBS的數(shù)據(jù)顯示,中國的iPhone銷售現(xiàn)在占到了全球總銷量的36%,中國未來可能會成為iPhone最大的市場。針對上面我們所講述到的兩個內(nèi)容,設(shè)計一款基于iOS的智能旅游的APP是非常有必要和有吸引力的。所以在這個大背景下我們提出并設(shè)計了這個課題項(xiàng)目。
2 相關(guān)技術(shù)的概述
2.1 iOS的介紹
iOS系統(tǒng)是蘋果公司2007年1月9日在Macworld大會上公布的智能操作系統(tǒng),它的是內(nèi)核基于蘋果的Darwin系統(tǒng)的類Unix的商業(yè)操作系統(tǒng)。最初是設(shè)計是給iPhone使用的,后來有套用到了iPod touch、iPad和Apple TV等蘋果產(chǎn)品上。iOS系統(tǒng)不僅有絢麗的界面體驗(yàn),還支持豐富的手勢操作如滑動、輕按、旋轉(zhuǎn)和擠壓等,以及其強(qiáng)大的圖像處理功能和傳感器的支持等功能,是其受到廣大消費(fèi)者的喜愛。除了這些它還有云存儲iCloud和即時通訊iMessage等功能。作為一款手機(jī)操作系統(tǒng),iOS的設(shè)計過程是在Xcode IDE集成設(shè)計環(huán)境下進(jìn)行的。iOS的框架是由四個部分組成他們分別是:
點(diǎn)觸層(Cocoa Touch Layer)、媒體層(Media Layer)、核心服務(wù)層(Core Services Layer)以及核心操作系統(tǒng)層(Core OS Layer)。
2.2 iOS的設(shè)計環(huán)境
2.2.1 Xcode與Objective-c
Xcode IDE作為iOS的應(yīng)用程序集成環(huán)境主要由Xcode、Interface Builder和Instruments三部分組成。iOS的設(shè)計工具只要是Xcode,Xcode主要用于對程序代碼的編寫、編譯、運(yùn)行和調(diào)試。Interface Builder的功能可以使設(shè)計者通過拖拽描繪程序的布局,也就是提供可視化的設(shè)計。Instrument可以對內(nèi)存的申請、釋放及泄露進(jìn)行監(jiān)管,所以它主要用于監(jiān)測應(yīng)用測序運(yùn)行時的內(nèi)存使用的情況。
了解并安裝Xcode,我們就可以在Xcode上進(jìn)行程序的設(shè)計,Objective-C是iOS上設(shè)計使用的標(biāo)準(zhǔn)語言,他是C語言加上面向?qū)ο蟮奶匦?,可以說是C語言的超集。Objective-C最重要的一個特點(diǎn)就是它不支持垃圾的回收,它的內(nèi)存管理需要手動來實(shí)現(xiàn)。所以我們在編譯過程中需要引入自動釋放池和引用計數(shù)兩種內(nèi)存管理機(jī)。
2.2.2內(nèi)存管理
Objective-C沒有自動垃圾回收的機(jī)制,所以內(nèi)存的管理需要手動來實(shí)現(xiàn)。這就意味著設(shè)計人員必須對何時創(chuàng)建對象、保留對象和從內(nèi)存中釋放對象都要進(jìn)行有效的控制。因?yàn)樵趇OS的設(shè)計過程中很多程序崩潰的請況都與內(nèi)存管理不當(dāng)有關(guān)。
內(nèi)存的管理Objective-C中的重難點(diǎn),它依賴于一個引用計數(shù)的內(nèi)存管理系統(tǒng),Objective-C提供了兩套內(nèi)存管理的機(jī)制:
第一:引用計數(shù)。引用計數(shù)的使用就是調(diào)用NSOject中的retainCount屬性對內(nèi)存引用進(jìn)行計數(shù)。
第二:自動釋放池。自動釋放池方法就是調(diào)用NSOject類中autorelease方法對內(nèi)存進(jìn)行管理。本項(xiàng)目做的是手機(jī)APP的設(shè)計,所以一個APP是否進(jìn)行了內(nèi)存的優(yōu)化,它對這個APP運(yùn)行時的速度、流暢度等都有著根本性的作用。
3 項(xiàng)目介紹
3.1 項(xiàng)目介紹
本項(xiàng)目是基于iOS平臺設(shè)計的APP, 它為用戶提供了貴州主要景點(diǎn)和酒店等信息的查詢服務(wù),以及提供了實(shí)時的定位導(dǎo)航等功能。主要功能簡介如下:
1)注冊登陸功能。游客通過在線填寫個人信息(姓名、電話、郵箱等),系統(tǒng)對用戶的手機(jī)號、郵箱進(jìn)行唯一性校驗(yàn);注冊成功后,用戶輸入設(shè)置好的密碼進(jìn)行登陸。
2)實(shí)時的餐廳和酒店的信息。游客可以通過移動互聯(lián)網(wǎng)絡(luò)的接入服務(wù)獲得即時的餐館和酒店的信息。
3)實(shí)時的地理信息。游客可以通過智能手機(jī)導(dǎo)航獲得有效的地理信息服務(wù)。
4)實(shí)時的信息獲取分享。游客可以通過與社交網(wǎng)絡(luò)的連接及時的分享。
5)二維碼的掃描。游客可以通過掃描二維碼的方式,下載我們的應(yīng)用軟件。
3.2 智慧旅行
本項(xiàng)目的名稱叫做“智行黔中”,而什么是“智行”呢?這個取名其實(shí)是從智慧旅游得來的,智慧旅游就是指我們利用云計算,物聯(lián)網(wǎng)等技術(shù),使用終端設(shè)備通過移動互聯(lián)感知旅游資源,旅游活動,旅游經(jīng)濟(jì)等。簡單地說人們可以通過的自己的移動終端設(shè)備實(shí)現(xiàn)上網(wǎng)互動,將自己的旅游行程安排進(jìn)入觸摸時代。
4 項(xiàng)目實(shí)現(xiàn)
4.1 項(xiàng)目簡介
本項(xiàng)目是基于iOS平臺定制的旅游APP文章主要講述了我們項(xiàng)目在iOS平臺下實(shí)現(xiàn)這款A(yù)PP的功能,其中包括iOS環(huán)境的搭建和iOS在內(nèi)存處理上的管理和介紹,以及iOS于web的連接和GPS定位等功能的實(shí)現(xiàn)。Xcode和Objective-C 語言作為集成的設(shè)計環(huán)境,采用開源網(wǎng)絡(luò)訪問框架ASIHTTPRequest 實(shí)現(xiàn)網(wǎng)絡(luò)的高效訪問,并對地圖導(dǎo)覽應(yīng)用實(shí)現(xiàn)和業(yè)務(wù)需求的進(jìn)行了分析。
4.2 ASIHTTPRequest
我們訪問網(wǎng)絡(luò)的步驟是使用web server技術(shù),通過http協(xié)議請求確定地址URL、建立請求、開始連接、等待網(wǎng)絡(luò)處理和連接完成,處理結(jié)果過程,經(jīng)過對URL對資源的定位來實(shí)現(xiàn)和服務(wù)器數(shù)據(jù)傳輸。
很多時候我們使用iPhone和iPad等只是作為一個終端和載體,因?yàn)槲覀兘?jīng)常需要使用的信息和服務(wù)是來自web server服務(wù)端,而iphone客戶端的資源是非常有限的,如它自身也帶有的數(shù)據(jù)庫sqlite等,不過也只是非常少量的客戶端的數(shù)據(jù)操作而已。所以iOS中web的連接是非常重要的一部分,當(dāng)然iOS的服務(wù)端功能也是非常強(qiáng)大的。本目主要是在開源ASIHTTPRequest框架下進(jìn)行的。
ASIHTTPRequest是一款極其強(qiáng)勁的http訪問開源項(xiàng)目ASIHTTPRequest框架是基于OBjective-C的優(yōu)秀的第三方http框架。
ASIHTTPRequest框架下的兩個主要的網(wǎng)絡(luò)請求GET和POST請求。 GET的語句是獲取指定的URL上的資源;POST請求的語意是對指定資源“追加/添加”數(shù)據(jù),也就是對指定資源“追加/添加”數(shù)據(jù)所有數(shù)據(jù)對用戶來說不可見。當(dāng)傳輸大量數(shù)據(jù)時,和上傳文件只能使用POST。在iOS設(shè)計中,需要和WEB服務(wù)器進(jìn)行交互,我們使用web server技術(shù),通過web協(xié)議提供服務(wù)和URL定位資源,并保證不同平臺的應(yīng)用服務(wù)可以相互操作。目前web server實(shí)現(xiàn)方案有rest、soap和XML-RPC。我們使用數(shù)據(jù)交互格式是JISON格式:一種輕量級的數(shù)據(jù)交換格式,由于Web和移動平臺設(shè)計對流量的要求是要盡可能少,對速度的要求是要盡可能快,而輕量級的數(shù)據(jù)交換格式JSON就成為理想的數(shù)據(jù)交換格式。 客戶端與服務(wù)器端后臺到的數(shù)據(jù)交互還需要遵循h(huán)ttp協(xié)議。有了以上的基礎(chǔ)即可以實(shí)現(xiàn)與web連接。
4.3 地圖應(yīng)用與衛(wèi)星定位
4.4.1 地圖的應(yīng)用
如今智能機(jī)基本上都帶有GPS功能,每當(dāng)我們出差或者外出旅行時,通過智能手機(jī)查看地圖和衛(wèi)星定位導(dǎo)航這些功能都能給我們帶來極大的方便,在我們設(shè)計的APP中你只需要點(diǎn)擊地圖圖標(biāo)就可以方便地查詢到你想要的地圖并且還可以實(shí)現(xiàn)衛(wèi)星的實(shí)時的定位。
在iOS中,定位服務(wù)和地圖應(yīng)用是兩套完全不同的API,但是它們又是緊密相關(guān)的。首先講的是定位服務(wù),在iOS設(shè)備中提供了三種不同途徑的定位服務(wù)分別是:Wi-Fi、蜂窩式移動電話基站、GPS衛(wèi)星。 iOS中定位服務(wù)主要使用CoreLocation框架,定位時主要使用的類是:
1)CLLocationManager。用于定位服務(wù)管理類,它能夠給我們提供位置信息和高度信息,也可以監(jiān)控設(shè)備
進(jìn)入或離開某個區(qū)域,還可以獲得設(shè)備的運(yùn)行方向等。
2)CLLocationManagerDelegate。它是CLLocationManager類的委托協(xié)議。
3)CLLocation。該類封裝了位置和高度信息。
上述的類能實(shí)現(xiàn)的查詢只是一些地理上的經(jīng)度和緯度的數(shù)據(jù),對我們一般人而言是很難看懂這些數(shù)據(jù)的,所以我們使用另一項(xiàng)技術(shù)地理信息編碼來解決這個問題。首先,我們將信息封裝在CLPlacemark類中,CLPlacemark類有很多屬性:
1)subAdministrativeArea。行政區(qū)域附加信息。
2)locality。指定城市信息。
3)subLocality。指定城市信息附加信息。
4)thoroughfare。指定街道級別信息。
地理信息反編碼使用CLGeocoder類實(shí)現(xiàn),CLGeocoder類中進(jìn)行地理信息反編碼的方法是:
-(void)reverseGeocodeLocation:(CLLocation*)locationcompletionHandler:
(CLGeocodeCompletionHandler)completionHandler
其中l(wèi)ocation是要定位的地理位置的對象,completionHandler是指定一個代碼塊,用于地理信息反編碼之后的回調(diào)。
最后我們還要加上地理信息編碼的方法,因?yàn)楫?dāng)游客查詢地點(diǎn)時,如果地點(diǎn)的名字使用很普遍,比如“小河”這樣的地名,所以使用地理信息編碼來指點(diǎn)區(qū)域范圍的查詢:
地理信息編碼也是采用CLGeocoder類,我們用到的它的屬性有:
geocodeAddressDictionary:completionHandler:。通過指定一個地址信息字典對象參數(shù)進(jìn)行查詢。
geocodeAddressString:completionHandler:。通過指定一個地址字符串參數(shù)進(jìn)行查詢。
geocodeAddressString:inRegion:completionHandler:。通過指定地址字符串和查詢的范圍作為參數(shù)進(jìn)行查詢,其中inRegion部分的參數(shù)用于指定查詢范圍,它是CLRegion類型。
4.4.2 衛(wèi)星定位
用戶使用定位服務(wù)時,需要調(diào)用GPS硬件來獲取當(dāng)前的位置信息。在iOS中我們可以使用兩種方法來實(shí)現(xiàn)定位服務(wù),一種是借助谷歌的web地圖API設(shè)計地圖應(yīng)用,這種方法大多使用的是web技術(shù),而不是本地技術(shù)。第二種是使用Map Kit API技術(shù)設(shè)計地圖的應(yīng)用。本項(xiàng)目就是使用Map Kit API設(shè)計的。
Map Kit API的核心類是MKMapView,它是顯示地圖的視圖,它的委托協(xié)議是MKMapViewDelegate。使用Map Kit API時,需要導(dǎo)入MapKit框架,引入頭文件MapKit/MapKit.h和引入MapKit.Framework,并且還需要聲明MKMapViewDelegate協(xié)議。
實(shí)現(xiàn)定位后我們需要添加標(biāo)注來顯示地名等信息,在地圖上添加標(biāo)注點(diǎn)需要兩個步驟::第一步是觸發(fā)添加動作,第二步是實(shí)現(xiàn)地圖委托方法mapView:viewForAnnotation。如果有多個點(diǎn)需要標(biāo)注,我們可以使用MKMapItem的類方法。
由于用戶使用定位時的地理位置是動態(tài)變化的,所以用戶在地圖上的信息是需要不斷的動態(tài)更新的。MapKit提供了跟蹤用戶位置和方向變化的API,在設(shè)置時我們只需要開啟啟地圖視圖的showsUserLocation屬性,并設(shè)置方法setUserTrackingMode:就可以了。
4.4 二維碼的實(shí)現(xiàn)
二維碼作為近幾年的一項(xiàng)新興的技術(shù),在移動設(shè)備上是非常流行的一種編碼方式。如今二維碼隨處可見,我們可以在各式的商品、海報、電視上等等的很多的地方看到二維碼的身影。而手機(jī)能夠提供生成二維碼和掃碼二維碼的功能又成為了二維碼很好的應(yīng)用平臺。現(xiàn)在我們打開手機(jī)都會看到很多APP都有二維碼功能。二維碼前身是一維碼,一維碼由于受信息容量的限制等問題,使用不方便,且效率低。然而二維碼的出現(xiàn)解決了很多一維碼的問題,二維碼具有高密度、高可靠性以及查詢便捷和易于普及等特點(diǎn),這也是它能迅速流行的重要原因。
二維碼是由黑白相間的圖形來記錄信息的,它是把圖像顯示信息還原為計算機(jī)的字符代碼0和1.掃描二維碼的過程是:
1)通過終端拍照來獲取二維碼的圖形。
2)通過解碼軟件對掃描到的二維碼進(jìn)行掃描。
3)通過應(yīng)用軟件對二維碼的信息處理并為用戶提供服務(wù)。
目前在iOS中實(shí)現(xiàn)二維碼的掃描的兩大開源組件是ZBar與ZXing。它們各自的特點(diǎn)是不同的,ZBar在掃描靈敏度上,和內(nèi)存使用上相對于ZXing上都是較優(yōu)的,但是對于 “圓角二維碼” 的掃描就很困難。,而ZXing是由 Google Code上的一個開源的條形碼掃描庫,在iOS中只是OC代碼進(jìn)行了封裝而已,并且也沒有維護(hù)和更新。所有我們使用ZBar來實(shí)現(xiàn)我們的項(xiàng)目。
5 結(jié)束語
本課題介紹的是基于iOS的智慧旅游的APP的設(shè)計和實(shí)現(xiàn)。在整個過程中我們首先分析了智能終端和旅游的發(fā)展。第二,并介紹了iOS的設(shè)計環(huán)境。第三,介紹了在ASIHTTPRequest框架下實(shí)現(xiàn)web的連接。第四,介紹使用GPS功能實(shí)現(xiàn)地圖查詢和衛(wèi)星定位功能。
本項(xiàng)目目前已經(jīng)過初步的測試,由于時間和技術(shù)水平有限。目前還有很多功能有待完善,對于本課題未來的展望,我們會在添加實(shí)現(xiàn)景點(diǎn)在線支付購票,還有在線打的等功能。
參考文獻(xiàn):
[1] 劉麗, 殷曉翠. 基于地理位置的APP定制旅游服務(wù)研究[J]. 電子制作, 2014(21).
[2] 劉彥. 基于iOS環(huán)境的應(yīng)用軟件交互設(shè)計策略[J]. 信息化研究, 2011(5).
[3] 崔維, 李暉, 劉佳佳, 王艷娟.基于iOS的企業(yè)APP客戶端的設(shè)計與實(shí)現(xiàn)[J]. 科技創(chuàng)新與應(yīng)用, 2014(24).
[4] 黃天柱, 涂時亮. iOS設(shè)計UITableView 加載圖片的內(nèi)存管理[J]. 計算機(jī)系統(tǒng)應(yīng)用, 2012(9).
[5] 譚家龍. 基于iOS電子地圖查詢系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J]. 無線互聯(lián)科技, 2013(6).
[6] 孫悅. 郝凌冰.基于iOS平臺的圖書館圖書檢索系統(tǒng)[C].中國計算機(jī)用戶協(xié)會網(wǎng)絡(luò)應(yīng)用分會網(wǎng)絡(luò)新技術(shù)與應(yīng)用年會, 2013.
[7] 如何在iOS上展現(xiàn)Web Service數(shù)據(jù)[EB/OL]. http://www.2cto.com/kf/201304/200576.html.