• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于IOS開發(fā)的手機旅游客戶端

      2017-04-26 22:21:22李艷艷楊晨光
      電腦知識與技術(shù) 2017年6期
      關(guān)鍵詞:景點應用程序框架

      李艷艷+楊晨光

      摘要:本款旅游軟件,旨在為用戶提供詳細的旅游信息,滿足喜歡旅游的用戶的需求,為用戶提供了各種豐富的功能。整個項目使用基于Foundation框架下得Objective-C語言編寫的,使用基于UIKit框架下的UI設(shè)計搭建的用戶界面來與用戶交流,通過使用每個類之間的接口文件關(guān)聯(lián)多個類,使用MapKit框架和CoreLocation框架下來實現(xiàn)地圖定位功能,使用訊飛語音實現(xiàn)了語音錄入功能,使用本地數(shù)據(jù)庫SQLite存儲用戶信息以及收藏的景點信息,除此之外還使用Quartz框架,SystemConfiguration框架,CoreFoundation框架等輔助完成本項目。本應用程序以文字和圖片相結(jié)合的方式生動地為用戶展示旅游信息,通過本款應用程序用戶可以搜索到自己心儀的景點以及目的地,大大地方便了用戶的出行。

      關(guān)鍵詞:Objective-C;iOS框架;SQLite數(shù)據(jù)庫;第三方類庫;地圖;科大訊飛

      中圖分類號:TN929 文獻標識碼:A 文章編號:1009-3044(2017)06-0223-04

      時代在進步,科技在發(fā)展,手機的作用已經(jīng)不僅僅是打電話,發(fā)短信,其擔任的更重要的角色是人們信息的提供者,所以手機應用行業(yè)逐漸成為熱門行業(yè),現(xiàn)如今移動應用的開發(fā)產(chǎn)業(yè)充斥著人們的生活,現(xiàn)在主要的幾大移動平臺有如下幾個:iOS平臺、Android平臺、mobile web(WAP/XHTML/CSS/Javascript)。其中安卓(Android)具有開放性,多任務,畫面流暢,硬件設(shè)備性能優(yōu)良等優(yōu)點,占據(jù)了智能機市場的絕大部分。但是安卓產(chǎn)品的兼容性較差,有些產(chǎn)品華而不實,用戶體驗較差。就目前而言,其他平臺的市場占有率正在呈下降趨勢,而近iOS產(chǎn)品的市場占有率正在上升。

      隨著蘋果產(chǎn)品的不斷更新,相應的各類應用的開發(fā)也越來越火爆。就目前而言,iOS在智能手機的應用軟件中的下載量占了33%,另外,iOS平板電腦應用的下載量占據(jù)75%,所以,iOS的相關(guān)應用軟件有著龐大的消費群體。由于iOS的應用夠創(chuàng)意,夠?qū)嵱?,用戶群體龐大,iOS軟件發(fā)展形勢樂觀,致使許多開發(fā)者投身其中。隨著人們生活品質(zhì)的提高,生活節(jié)奏的加快,更加注重詩句感官的效果?;谶@種現(xiàn)狀,開發(fā)一款旅游類的手機應用,為用戶提供詳細的出行信息,旅游信息的介紹,滿足用戶足不出戶就可以右邊全世界的需求是十分符合市場規(guī)律的。整個項目使用基于Foundation框架下得Objective-C語言編寫的,使用基于UIKit框架下的UI設(shè)計搭建的用戶界面來與用戶交流,通過使用每個類之間的接口文件關(guān)聯(lián)多個類,使用MapKit框架和CoreLocation框架下來實現(xiàn)地圖定位功能,使用訊飛語音實現(xiàn)了語音錄入功能,使用本地數(shù)據(jù)庫SQLite存儲用戶信息以及收藏的景點信息,除此之外還使用Quartz框架,SystemConfiguration框架,CoreFoundation框架等輔助完成本項目。

      本應用程序的設(shè)計目標是開發(fā)一款具有界面友好的,注重安全性的,用戶體驗良好的,易于擴展和維護的手機APP。

      1 界面設(shè)計

      1)推薦界面。分為火熱推薦以及趣季推薦兩個部分。該界面整體是一個表視圖,首頁默認顯示北京熱門地點推薦,用戶點擊其他城市跳轉(zhuǎn)到相應界面。界面要做到功能齊全,簡介不冗余并且簡單易于用戶操作。

      2)目的地界面。該界面是總體介紹世界各地的界面,分為國內(nèi)城市、熱門城市、港澳臺、歐洲國家、亞洲國家以及美洲和大洋洲這幾大模塊,點擊每個模塊時候跳轉(zhuǎn)到相應的詳情介紹界面。

      3)主題游界面。該界面整體是一個表視圖,展示不同的游玩的主題,點擊跳轉(zhuǎn)到詳細界面。

      4)景點界面。首頁默認顯示三亞的相關(guān)景點列表,在此界面可以直接搜索想要去的景點,也可以選擇想要去的城市并展示相應城市的景點列表。

      5)我的界面。在此界面顯示該項目的一些信息,可以在此界面登錄注冊、查看收藏信息,清除緩存等。

      6)登錄界面。登錄時需要填寫用戶名和密碼,與數(shù)據(jù)庫中存儲的用戶信息進行匹配,保證了用戶安全。

      2 系統(tǒng)模塊

      整個系統(tǒng)共分為5個打的模塊:推薦模塊、目的地模塊、主題游模塊、景點模塊、我的模塊。每個模塊實現(xiàn)的功能介紹如下:

      1) 推薦模塊。本模塊要實現(xiàn)的功能是為用推薦幾個熱門城市的旅游地點以及戶外的旅游信息,首頁默認顯示北京熱門地點推薦,用戶點擊其他城市跳轉(zhuǎn)到相應界面。在顯示戶外信息的界面用戶可以根據(jù)自己的意愿選擇想要查看的城市的戶外信息。

      2) 目的地模塊。界面中將世界分為幾大模塊,每一個模塊中包括相應的城市,點擊相應的城市之后機會跳轉(zhuǎn)到該城市的景點列表界面,在此界面有地圖定位功能,可以查看該景點的周邊信息。

      3) 主題游模塊。該模塊為用戶提供旅游的主題,每個主題中包含相應的景點信息。

      4) 景點模塊。該模塊是總體介紹世界各地的景點,可以根據(jù)自己的意愿進行搜索,搜索時有語音識別功能,說出想要查詢的景點即可,方便用戶使用。

      5) 我的界面。在此界面有登錄注冊功能,查看收藏信息功能,清除緩存等功能。

      通過對項目進行功能需求分析,可以初步確定該項目所需的基本數(shù)據(jù)。各模塊的具體數(shù)據(jù)需求如下:

      1)推薦模塊。該模塊的數(shù)據(jù)持久化使用相對應的plist文件實現(xiàn),此文件中共有8個字典,每一個字典存儲一個熱門城市的數(shù)據(jù),其中url這一個鍵對應的值就是我們進行網(wǎng)絡請求是的鏈接,同時也是該模塊的數(shù)據(jù)來源。

      2)目的地模塊。該模塊的數(shù)據(jù)持久化使用DestinationCityList.plist文件實現(xiàn),此文件中共有8個字典,每一個字典存儲一個小模塊的數(shù)據(jù),其中url這一個鍵對應的值就是我們進行網(wǎng)絡請求時的鏈接,同時也是該模塊的數(shù)據(jù)來源,由此得到相應模塊的城市列表。在城市列表中點擊得到的詳情頁數(shù)數(shù)據(jù)來源于一個公共鏈接,在此鏈接中有關(guān)數(shù)據(jù)的字段是我們點擊的地點的名稱,由此得到相對應的景點信息。

      3)主題游模塊。

      4)景點模塊。該模塊首頁默認顯示三亞的景點信息,每個城市都有自己對應的城市ID號,解析根據(jù)此ID得到的不同鏈接從而得到相應的數(shù)據(jù),點擊城市列表時根據(jù)一個城市列表的鏈接進行數(shù)據(jù)請求和數(shù)據(jù)解析得到城市列表的Model類,然后將其中的id屬性通過代理回調(diào)回傳給上個鏈接的城市id,從而獲取不同城市的景點信息。

      5)我的模塊。使用SQLite本地數(shù)據(jù)庫存儲注冊的用戶信息,以及用戶收藏的景點和目的地信息,用戶查看時從數(shù)據(jù)庫中調(diào)取相應數(shù)據(jù)。

      應用程序致力于為用戶提供詳細的旅游信息,方便用戶出行,圍繞這一中心任務,該應用程序用戶分為兩種:注冊用戶和游客。

      已經(jīng)注冊的用戶在使用該應用程序時可以先進行登錄操作,然后可以收藏目的地和景點信息,并對其進行修改。注冊并已經(jīng)登錄的用戶用例圖如圖1所示:

      游客指的是還沒有注冊的用戶,這些用戶只能對本應用程序中的信息進行瀏覽不可以進行收藏操作,可以進行注冊登錄操作。游客用戶用例圖如圖2所示:

      3 系統(tǒng)關(guān)鍵技術(shù)

      3.1 Objective-C語言

      Objective-C,通常寫作ObjC和Obj-C,是擴充C的面向?qū)ο缶幊陶Z言。它主要使用于Mac OS X和GNUstep這兩個使用OpenStep標準的系統(tǒng)。Objective-c在運行時可以允許根據(jù)字符串名字來訪問方法和類,還可以動態(tài)鏈接和添加類[1]。

      3.2 Foundation框架和UIKit框架

      Objective-C中的Foundation框架與Java中的SDK類庫相似,是框架的基礎(chǔ),與界面無關(guān),它提供了許多基本的各種基本數(shù)據(jù)類型、集合、操作系統(tǒng)服務的對象的類,包含了大量的API。

      UIKit框架提供一系列的class來建立和管理iOS應用程序的用戶界面接口、應用程序?qū)ο?、事件控制、繪圖模型、窗口、視圖和用于控制觸摸屏的接口等,是基礎(chǔ)的UI類庫,與Foundation框架是Cocoa框架中的兩個比較重要的框架[2]。

      3.3 SQLite數(shù)據(jù)庫

      SQLite是一款無數(shù)據(jù)類型的輕量級的嵌入式數(shù)據(jù)庫,具備了基本數(shù)據(jù)庫特性的數(shù)據(jù)庫文件,與其他引擎響應式數(shù)據(jù)庫不同的是SQLite是程序驅(qū)動。SQLite包含在一個相對小的C庫中,SQLite引擎不是個程序與之通信額獨立進程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內(nèi)的直接API調(diào)用[3]。

      該項目共有5個模塊:推薦模塊、目的地模塊、主題游模塊、景點模塊和我的模塊。項目總體結(jié)構(gòu)圖如下圖3所示:

      3.4 系統(tǒng)總體流程圖

      當用戶作為游客即未注冊用戶使用本應用程序時,可以對APP的各個模塊進行瀏覽,當要進行收藏操作時,就會跳到登錄或注冊界面,完成此項操作后方可進行收藏操作。具體流程圖如下圖4所示:

      3.5 APP的結(jié)構(gòu)設(shè)計

      3.6 數(shù)據(jù)請求代碼

      本應用程序的數(shù)據(jù)均來自于網(wǎng)絡數(shù)據(jù),是通過數(shù)據(jù)鏈接直接從網(wǎng)上獲取的,并非是提前在數(shù)據(jù)庫中寫好的固定的數(shù)據(jù)。網(wǎng)絡請求使用GET方式進行請求,然后使用系統(tǒng)提供的JSON方式進行數(shù)據(jù)解析,主要代碼如下:

      - (void)setData{

      if ([_app internetReachableOrNot]) {

      if (self.url == nil) {

      self.url = @"http://app.xialv.com/index2.php?a=sList2&page=1&city_id=1001&type=2";

      }

      NSURL *urlSrting = [NSURL URLWithString:self.url];

      self.allDataArray = [NSMutableArray new];

      for (NSDictionary *dict in modelDict[@"result"]) {

      BJModel *bjModel = [BJModel new];

      [bjModel setValuesForKeysWithDictionary:dict];

      [self.allDataArray addObject:bjModel];

      dispatch_async(dispatch_get_main_queue(), ^{

      [self.tableView.header endRefreshing];

      [self.indicator stopAnimating];

      [self.tableView reloadData];

      });

      }

      }];

      [dataTask resume];

      }else{

      [self.tableView.header endRefreshing];

      [self alertController];

      }

      }

      首先判斷網(wǎng)絡是否連接,只有在有網(wǎng)的狀態(tài)下才會進行數(shù)據(jù)請求,self.url就是用于數(shù)據(jù)請求的連接,進行數(shù)據(jù)請求的步驟是:創(chuàng)建URL對象——>根據(jù)URL創(chuàng)建請求對象——>獲取當前會話(網(wǎng)絡請求的主體內(nèi)容)——>創(chuàng)建數(shù)據(jù)請求任務——>啟動任務。在數(shù)據(jù)請求任務中有一個block塊,在這里面進行數(shù)據(jù)解析操作。

      需要注意的是block塊語法在執(zhí)行數(shù)據(jù)請求操作的時候是異步操作(不影響主線程的執(zhí)行),也就是說程序在執(zhí)行到block塊的時候會同時執(zhí)行block內(nèi)部和外部的代碼,如果此時在外部要使用block內(nèi)部請求的數(shù)據(jù),數(shù)據(jù)可能為空,解決這一問題的方法就是在完成數(shù)據(jù)解析操作之后使用dispatch_async(dispatch_get_main_queue(), ^{})這一方法使程序回到主線程刷新數(shù)據(jù),這樣就可以正常運行了。

      3.7 分享功能

      分享使用的是友盟第三方分享,可以將本應用程序的內(nèi)容分享到新浪微博、豆瓣、人人等交流平臺。首先使用CocoPods導入友盟SDK,然后添加相應的依賴庫,在需要分享的類中導入頭文件#import 以及#import ,分享實現(xiàn)的主要代碼如下:

      NSString *shareString = [NSString stringWithFormat:@"【%@,%@!】%@ 錯落的時光里,紛繁的生活中,#時遺#帶你體驗簡單的美好!", self.detailsModel.title, self.detailsModel.viceTitle, self.detailsModel.shareUrl];

      [[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:self.detailsModel.iconUrl];

      [UMSocialSnsService presentSnsIconSheetView:self appKey:@"5732cc6b67e58ecfef0010be" shareText:shareString shareImage:nil shareToSnsNames:[NSArray arrayWithObjects:UMShareToSina,UMShareToRenren, UMShareToTencent, UMShareToDouban, nil] delegate:nil];

      }

      -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response

      {

      if(response.responseCode == UMSResponseCodeSuccess)

      {

      NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);

      }else{

      NSLog(@"%d",response.responseCode);

      }

      提前設(shè)置好需要分享的內(nèi)容,然后UMSociaSnsService調(diào)用presentSnsIconSheetView:appKey:shareText:shareImage:shareToSnsNames:方法將需要分享的文字、圖片分享到各個平臺。

      3.8 語音功能

      本應用程序提供語音識別功能,需要使用CocoPods導入iflyMSC框架,然后在Appdelegate類中注冊初始化語音通訊,在需要使用語音識別的類中導入頭文件#import "iflyMSC/IFlyRecognizerViewDelegate.h"、#import "iflyMSC/IFlyRecognizerView.h"以及#import "iflyMSC/IFlySpeechConstant.h",然后需要遵循IFlyRecognizerViewDelegate協(xié)議,點擊語音按鈕之后會調(diào)用按鈕的觸發(fā)方法- (void)voiceAction:(UIButton *)button,開始語音識別,然后調(diào)用相應的協(xié)議方法-(void)onResult:(NSArray *)resultArray isLast:(BOOL)isLast;獲取所說的話并將其賦值給搜索文本框,主要實現(xiàn)代碼如下:

      - (void)voiceAction:(UIButton *)button{

      [self.iflyRecognizerView start];

      }

      -(void)onResult:(NSArray *)resultArray isLast:(BOOL)isLast{

      // 獲取說話結(jié)果中的內(nèi)容

      NSDictionary *dict = [resultArray firstObject];

      NSLog(@"%@",resultArray);

      for (NSString *key in dict) {

      [self.resultString appendFormat:@"%@",key];

      }

      self.searchBar.text = @"";

      self.searchBar.text = self.resultString;

      }

      本應用程序主要實現(xiàn)了以下基本功能:

      1)本應用程序采用MVC模式設(shè)計,很好地實現(xiàn)了數(shù)據(jù)設(shè)計和界面設(shè)計的分離。

      2)使用UIKit框架下的系統(tǒng)類實現(xiàn)了此應用程序的界面設(shè)計。分為游客模式和登錄用戶模式兩種。

      3)系統(tǒng)分享功能,實現(xiàn)了用戶瀏覽趣季模塊時可以將自己感興趣的內(nèi)容分享到微博、人人等交流平臺的操作。

      4)地圖定位功能,實現(xiàn)了用戶瀏覽目的地時準確定位景點所在地的操作。

      5)收藏功能,實現(xiàn)了已經(jīng)登錄的用戶在瀏覽目的地和景點模塊時可以將自己感興趣或者想去的地方收藏到本地數(shù)據(jù)庫的操作。

      6)個人基本資料管理功能,游客可以注冊新用戶,系統(tǒng)會將用戶信息存儲在服務器,用戶登錄的時候會將輸入的信息與服務器的數(shù)據(jù)進行匹配。

      在應用程序設(shè)計過程中,MVC模式的優(yōu)勢在諸多方面彰顯出來,促進了應用程序的開發(fā)的進度與效率。

      參考文獻:

      [1] 付紅升.基于用戶興趣的手機終端視頻推薦系統(tǒng)[D]. 大連:大連理工大學,2014.

      [2] 楊豐汀.基于移動設(shè)備的圖書館讀者社區(qū)子系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京:北京郵電大學,2014.

      [3] 李小虎.基于Wi-Fi網(wǎng)絡的智能導游管理系統(tǒng)設(shè)計與實現(xiàn)[D]. 北京:北京郵電大學,2014.

      猜你喜歡
      景點應用程序框架
      框架
      廣義框架的不相交性
      刪除Win10中自帶的應用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      打卡名校景點——那些必去朝圣的大學景點
      WTO框架下
      法大研究生(2017年1期)2017-04-10 08:55:06
      英格蘭十大怪異景點
      海外星云(2016年7期)2016-12-01 04:18:07
      沒有景點 只是生活
      Coco薇(2015年11期)2015-11-09 13:19:52
      一種基于OpenStack的云應用開發(fā)框架
      景點個股表現(xiàn)
      關(guān)閉應用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      哈尔滨市| 元氏县| 松阳县| 延庆县| 龙山县| 陆河县| 长白| 玉山县| 安徽省| 泰来县| 蚌埠市| 乌拉特后旗| 丽江市| 瓦房店市| 武川县| 湘潭县| 泰来县| 玛多县| 五原县| 休宁县| 贡嘎县| 大悟县| 从江县| 徐州市| 临沧市| 惠来县| 宣化县| 鲁甸县| 桃园市| 蒲城县| 华阴市| 通许县| 资源县| 广元市| 乐东| 武鸣县| 南江县| 安徽省| 许昌市| 塘沽区| 保亭|