何 宇,林曉煥,郭 靖
(西安工程大學電信學院,西安710048)
·微機應用·
iOS平臺上實時查詢公交的設(shè)計與實現(xiàn)
何 宇,林曉煥,郭 靖
(西安工程大學電信學院,西安710048)
針對現(xiàn)在生活節(jié)奏快、工作壓力大、以公交車為主要交通工具的時代,設(shè)計了一款可以查看具體公交實時信息的App,準確判斷離自己最近的公交位置,解決了緊急情況下人們對于選擇乘車路線的糾結(jié)。本課題采用了觸摸靈活、可以隨時隨地查詢公交的iOS客戶端平臺,采用多線程運動方式,可以從服務器上取數(shù)據(jù),同時顯示數(shù)據(jù),并且采用了解析服務器上數(shù)據(jù)效果最好的NSJSONSerialization方法,快速實時處理,提高了用戶體驗??梢宰層脩粼跁r間緊迫的情況下合理安排自己的乘車路線,讓人們的生活和工作更加方便、便捷。
公交車;查詢;體驗;iOS操作系統(tǒng)
iOS(iPhone/iPad/iPod Operationing System)是目前集觸摸靈活性最高、穩(wěn)定性最好、應用范圍最廣于一身的手機系統(tǒng)[1]。在如此強大的系統(tǒng)平臺上開發(fā)App,不僅可以提升用戶的體驗,而且可以最大化地刺激經(jīng)濟更快發(fā)展。
在提倡低碳環(huán)保的時代,購買私房車的壓力與日俱增,給私房車安家和補給燃油的困難隨之而來。乘坐公交車正在成為人們上班、購物、短途旅行等的首選交通工具?,F(xiàn)在,人們的生活壓力越來越大,生活節(jié)奏也越來越快,為了能夠上班不遲到,不影響正常的工作生活,人們通常需要準確知道一輛公交車的實時位置和時間。
目前市場上的軟件實現(xiàn)了在Android平臺上,實時查詢一個城市的公交信息。但受地域和平臺的限制,用戶的體驗也有很大程度的限制,并且查詢速度緩慢。針對現(xiàn)在遇到的問題,本論文主要對某市所有公交車,設(shè)計和實現(xiàn)了在iOS設(shè)備(即客戶端)上實時查看其所處的具體位置及到達時間,同時簡單說明了服務端的實現(xiàn)。
某市的每輛公交車上都安裝一款類定位儀,記錄公交車所經(jīng)過的站點名字,并且每經(jīng)過一站就要把這個站的名字上傳到服務器,當同一輛公交車上傳到服務器上站名的數(shù)量、起始站和終點站的名字與本趟車應該經(jīng)過的總站數(shù)相等、與服務器上記錄的起始站和終點站名字相同時,清空該趟車的記錄。
公交名:1,2,3,…,56,假設(shè)該市有56條不同線路的公交。
站點:A1?Z1,A1、Z1分別為某一條線路的始發(fā)站和終點站,其中間的站名為b1,c1,d1,…,x1,y1。
公交車編號:一條線路下有多輛公交車,用公交車的車牌號作為每輛公交車的標識。例:陜A001,陜A002…
圖1 服務端框架
客戶端的App主要功能是:搜索某個城市的名字后,可以顯示出該市所有的公交車路線和相應的起始站、終點站名字,點擊想要查詢的公交路線,可以準確顯示這條路線所有站點的名字,以及這趟路線的所有公交車目前分布情況,確保用戶可以比較準確的了解,還需要多長時間,可以過來一趟公交車,給時間緊迫的人們帶來很大幫助。
3.1 搜索功能的實現(xiàn)
進入App后,首頁是搜索功能,點擊最上面的搜索欄,就會自動調(diào)用軟鍵盤,輸入所要查詢的城市名字,點擊軟鍵盤的搜索鍵,將調(diào)用UISearchBarDelegate協(xié)議里面的searchBarSearchButtonClicked方法,即搜索方法,在該方法里面設(shè)置適合與在線服務通信的URL請求[2-3],即設(shè)置NSMutableURLRequest的實例為POST,通過NSURLConnection連接服務器上收集城市名字的地址,sendSynchronousRequest方法把搜索欄輸入的城市名字上傳到服務器,與服務器上已有的城市名字比較,如果有相同的城市名字,說明服務器上收集了這個城市的公交車信息。
UITableView對象會向數(shù)據(jù)源查詢要顯示的行數(shù)、顯示表格行數(shù)所需要的數(shù)據(jù)及顯示其他UITableView對象所需要的數(shù)據(jù),所以遵守UITable-ViewDataSource協(xié)議后,可以在首頁的表格視圖里面正確顯示所查詢城市的所有公交路線,以及每趟公交路線所對應的起始站和終點站[4-5]。如圖2(a)所示查詢到了西安的公交車,例如,1路車的起始站和終點站分別為A1和Z1;反之,如果服務器上沒有與上傳到服務器的城市名字相匹配的內(nèi)容,說明服務器端沒有搜集查詢城市的公交信息,將會提示找不到相關(guān)內(nèi)容,如圖2(b)所示。
圖2 公交路線顯示
找到符合條件的公交信息時,需要從服務器上取相應的公交路線數(shù)據(jù)顯示在表格視圖里面,設(shè)置NSMutableURLRequest的實例為GET,從服務器上取到數(shù)據(jù),然后通過NSJSONSerialization的類方法解析取到的數(shù)據(jù),最后將解析好的數(shù)據(jù)顯示在表格視圖上,如圖3所示。
從服務器上取數(shù)據(jù)顯示在表格視圖上,受網(wǎng)絡影響,會有很大的延遲,為了減少正確顯示內(nèi)容需要的時間,本論文采用了多線程。多線程模式下,任務可以“并行”[6],就是多個線程并行工作來完成多項任務,提高工作效率,即取數(shù)據(jù)和顯示數(shù)據(jù)在兩個不同的線程里面同時執(zhí)行,這樣達到了同步執(zhí)行,一邊取數(shù)據(jù)一邊將數(shù)據(jù)顯示在表格視圖里面,減少了用戶等待的時間,提高了用戶體驗效果。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^(void){//從服務器上取數(shù)據(jù),解析數(shù)據(jù)dispatch_async(dispatch_get_main_queue(),^{//在表格視圖里顯
示解析的數(shù)據(jù)});});
圖3 從服務器取數(shù)據(jù)流程圖
如果沒有找到用戶要查詢城市的公交信息,將會調(diào)用UIAlertView實例,提醒用戶沒有符合條件的內(nèi)容。
3.2 公交詳細信息顯示的實現(xiàn)
查到城市的所有公交線路后,拖動表格視圖,查看符合自己要求的公交,點擊符合要求的公交線路所在的位置,就會觸發(fā)UITableViewDelegate協(xié)議下的點擊某一行的方法tableView:didSelectRowAtIndex-Path:。在該方法里面調(diào)用實現(xiàn)presentViewController方法,顯示公交車詳細信息的界面。公交車的詳細界面應是UIViewController的子類,在其子類里面添加UILabel顯示最上面的標題,即在首頁點擊幾路公交車所在的一行,就會把這行的公交數(shù)傳到詳細界面,并顯示在UILabel上。例如點擊搜索界面的5路公交車所在的行,在詳細界面的UILabel上就會顯示西安5路公交車;在標題的下面添加一個UITextView,可以顯示查詢公交路線從起始站到終點站的所有站名。當站名較長或者站點較多,一行不能完全顯示所有公交站名時,可以滾動UITextView查看詳細站名。上面的返回按鈕可以調(diào)用dismissViewControllerAnimated:方法,返回到首頁的搜索界面,方便用戶繼續(xù)查詢公交的實時信息;最下面的表格視圖顯示了查詢公交線路的所有公交車目前所在的位置,如圖4所示,如果用戶現(xiàn)在在d5站,那么陜A5001公交車在c5站,即用戶所在位置的前一站,從而更好的判斷等一輛公交車大概需要多長時間,尤其在時間緊迫的情況下,可以合理安排自己的乘車路線。
圖4 查詢公交車的具體位置
經(jīng)過測試,多線程的使用,對卡屏現(xiàn)象有很大改善,巧妙的上傳數(shù)據(jù)到服務器和從服務器上取數(shù)據(jù),減少了連接服務器和取大量數(shù)據(jù)的時間,避免了用戶長時間的等待。這款App不會因為地域原因而限制用戶的體驗,可以滿足人們出行對具體公交線路的查詢,幫助時間緊迫的人們合理安排乘車路線,極大方便了人們的生活和工作。
[1]趙海,彭海霞,朱劍.IOS平臺上基于GPRS技術(shù)的Web客戶端系統(tǒng)的設(shè)計與實現(xiàn)[J].東北大學學報(自然科學版),2012,33(10):1399-1402.
[2]張彩霞,高穎,易磊.iPhone開發(fā)秘籍(第2版)[M].北京:人民郵電出版社,2010.
[3]李亮,楊武,張永強,茍振興.iPhone SDK 3開發(fā)指南[M].北京:電子工業(yè)出版社,2010.
[4]夏偉頻.ios編程(第3版)[M].武漢:華中科技大學出版社,2013.
[5]Gene Backlin.Professional iPhone and iPad Application Development[M].北京:清華大學出版社,2012.
[6]XMobileApp.iPhone創(chuàng)意開發(fā)入門與實踐[M].北京:人民郵電出版社,2010.
Design and Im plementation of a Real-time Query Bus on iOS Platform
HE Yu,LIN Xiao-huan,GUO Jing
(School of Electronic and Information,Xi’an Polytechnic University,Xi’an 710048,China)
Facing the life of high efficiency,high pressure and high frequency for taking the bus,this paper designs an App,which can check the real-time bus information and accurately judge the nearest bus location,to solve problems while choosing routes in emergency for the people.The flexible touch is adopted in this App to inquire the bus iOS client platform anytime and anywhere.The multi thread is used to read data from the server and display data in the same time,and the NSJSONSerialization method which analyzes the data on the server with best effect is used to process the data in real time for improving the user experience.The design and implementation can complete the reasonable arrangement for the bus routes and make the convenient life for the people.
Bus;Check;Experience;The iOS operating systerm
10.3969/j.issn.1002-2279.2014.03.017
TP311.52
:A
:1002-2279(2014)03-0060-03
何宇(1990-),女,山西省長治市人,碩士研究生,主研方向:數(shù)據(jù)通信與計算機軟件編程。
2013-11-12