摘 要:智能手機(jī)App應(yīng)用五花八門(mén),涉及了日常生活吃、穿、住、行、娛樂(lè)等各個(gè)方面,方便和豐富了我們的生活,加快了信息化生活的腳步,人們利用智能手機(jī)可以輕松地查收郵件、移動(dòng)辦公、查看新聞、下載應(yīng)用等。本文提到的城市通也是智能手機(jī)APP應(yīng)用,能夠?yàn)槿藗兊娜粘I顜?lái)很大方便,其中一個(gè)重要功能是提供生活中煤氣費(fèi)、水費(fèi)、電費(fèi)欠費(fèi)提醒功能,為了及時(shí)地傳遞此類(lèi)信息,需要為此類(lèi)信息實(shí)現(xiàn)消息推送功能,在Android手機(jī)操作系統(tǒng)中消息推送的方式有幾種可以供選擇,本文通過(guò)對(duì)這幾種推送消息的方式的特點(diǎn)比較,選擇最適合手機(jī)城市通的推送方式。
關(guān)鍵詞:App應(yīng)用;城市通;Android;消息推送
中圖分類(lèi)號(hào):TN929.5;TP311.52
1 研究背景
1.1 手機(jī)城市通研究背景
21世紀(jì)是一個(gè)信息化的時(shí)代,人們的生活節(jié)奏也變得很快,你的錢(qián)包里錢(qián)不一定很多,但是各種銀行的銀行卡至少有幾個(gè)吧,比如工資卡、信用卡、水費(fèi)卡、電費(fèi)卡、煤氣卡、社??ǖ?,現(xiàn)在再也沒(méi)有人到你家里敲門(mén)去收水、電、煤氣費(fèi)了,只要你在相應(yīng)的卡中預(yù)存一定額數(shù)的錢(qián),就可以享受足不出戶(hù)的優(yōu)越感,體會(huì)現(xiàn)代化生活了。但是當(dāng)你足不出戶(hù)的時(shí)候,有沒(méi)有突然想起,你的水、電、煤氣卡中還有沒(méi)有剩余的錢(qián)了呢,不知道什么時(shí)候家中是否會(huì)突然停電或是停水,有些擔(dān)心呢?
城市通是運(yùn)行在手機(jī)Android操作系統(tǒng)上的一款軟件,它給我們?cè)絹?lái)越快的信息化生活助力,成為大家生活中的電子小秘書(shū),其主要功能是負(fù)責(zé)提供一個(gè)特定城市吃、穿、住、行等生活方面的各種相關(guān)信息。包括水、電、煤氣的欠費(fèi)提醒,市級(jí)組織的大型活動(dòng)通知,買(mǎi)/賣(mài)房屋信息,停水/停電通知,商場(chǎng)打折促銷(xiāo)通知,飯店地點(diǎn)查詢(xún)及新增特色菜等信息。其中水、電、煤氣的欠費(fèi)提醒需要實(shí)現(xiàn)消息推送,這樣能夠第一時(shí)間將信息通知到用戶(hù),達(dá)到信息的即時(shí)性。替您解決生活中的憂慮和煩惱,減輕您的生活壓力,跟上信息化時(shí)代的腳步。
1.2 城市通主要功能
手機(jī)城市通主要功能與提供信息如下:(1)市級(jí)綜合通知:主要是市級(jí)的文字信息的通知,包含小區(qū)停水、停電、市文化部發(fā)布的消息、電信/有線發(fā)布的信息、交通局發(fā)布的信息等。(2)時(shí)時(shí)交通:及時(shí)發(fā)布交通路況信息,包括交通管制、修路、交通擁堵等信息。帶有語(yǔ)言功能,考慮到開(kāi)車(chē)不方便查看手機(jī)信息的情況,時(shí)時(shí)交通模塊可以將時(shí)時(shí)發(fā)布的交通信息用語(yǔ)音形式讀出。出行路況查看與查詢(xún),包括主要交通旅游路線高速公路的封路、暢通的情況,并可以提供旅游的主要路線。(3)我的消息:提示水、電、煤氣每個(gè)月的消費(fèi)量,并具有欠費(fèi)提前提醒功能,保證您的正常生活。(4)酒店查詢(xún):提供所在城市酒店的打折、特價(jià)、特色、優(yōu)惠等信息。并提供酒店的聯(lián)系電話,可以打電話定座。(5)商場(chǎng)活動(dòng):第一時(shí)間為您提供商場(chǎng)的打折與促銷(xiāo)信息。(6)房屋買(mǎi)賣(mài):為您提供房屋買(mǎi)賣(mài)等信息,并保證信息的可信度,可以查看房屋的文字和圖片信息,圖文并茂。
上面提到的6個(gè)手機(jī)城市通功能,其中第三個(gè)“我的消息”最要體現(xiàn)消息的即時(shí)性,即當(dāng)用戶(hù)存在費(fèi)用不足的情況時(shí),應(yīng)該立刻給用戶(hù)一個(gè)提示,所以此模塊需要實(shí)現(xiàn)Android消息推送機(jī)制。
2 消息推送機(jī)制的簡(jiǎn)介
所謂消息推送,需要不定時(shí)地從服務(wù)器端向手機(jī)客戶(hù)端即時(shí)推送各種通知消息。在iPhone上已經(jīng)有比較簡(jiǎn)單和完美的推送解決方案。但是在Android平臺(tái)上實(shí)現(xiàn)起來(lái)相對(duì)比較麻煩。一般來(lái)說(shuō),想實(shí)現(xiàn)消息推送,都需要應(yīng)用程序與服務(wù)器進(jìn)行交互,到服務(wù)器端獲取數(shù)據(jù)。獲取數(shù)據(jù)的方法一般來(lái)說(shuō)有兩種形式,第一種是在客戶(hù)端使用Pull的方式,每隔一段時(shí)間到服務(wù)器上獲取信息,看是否有更新的信息;第二種形式是在服務(wù)器端使用push方式,即推送的意思,當(dāng)服務(wù)器端有新信息了,就把信息推送到客戶(hù)端上。
在手機(jī)城市通軟件中到底是采用Pull方式還是采用push方式更適合呢?水、電、煤氣的用量都是以月為單位進(jìn)行計(jì)算的,如果欠費(fèi)的話,也應(yīng)該是一個(gè)月才通知一次,那么如果采用pull方式不定時(shí)地向服務(wù)器獲取信息的話,會(huì)浪費(fèi)客戶(hù)端的網(wǎng)絡(luò)流量,更主要的是耗費(fèi)的電量多。所以在這里應(yīng)該采用push方式更適合,當(dāng)服務(wù)器有欠費(fèi)通知時(shí),在服務(wù)器端向客戶(hù)端push一個(gè)消息。
所謂push即推送,是通過(guò)一定的技術(shù)標(biāo)準(zhǔn)或協(xié)議,在互聯(lián)網(wǎng)上向用戶(hù)傳送所需要的信息的一項(xiàng)技術(shù)。通過(guò)推送技術(shù),減少了客戶(hù)端在網(wǎng)絡(luò)上搜索的時(shí)間,幫助用戶(hù)高效率的發(fā)掘有價(jià)值的信息。
現(xiàn)在有很多應(yīng)用程序中都使用了消息推送機(jī)制,比如新浪微博推送最新的朋友消息;網(wǎng)易新聞推送一些重要的新聞;天氣預(yù)報(bào)會(huì)推送最新的天氣狀況;手機(jī)炒股軟件推送最新的股票資訊;Gmail、Gtalk推送最新的Mail信息和IM信息;微信推送最新的語(yǔ)音和文字信息;有信網(wǎng)絡(luò)電話推送簽到贈(zèng)送話費(fèi)的信息等等。
3 消息推送方式的解決方案
下面介紹和分析了幾種Android操作系統(tǒng)中消息推送的幾種解決方案,從中我們選擇一種比較適合手機(jī)城市通中的消息推送解決方案。
3.1 Google公司的C2DM。在Android手機(jī)平臺(tái)上,Google提供C2DM(Cloud to Device Messaging)幫助開(kāi)發(fā)者從服務(wù)器向Android應(yīng)用程序發(fā)送數(shù)據(jù)的服務(wù)。它提供了一個(gè)簡(jiǎn)單的、輕量級(jí)的機(jī)制,允許服務(wù)器可以通知移動(dòng)應(yīng)用程序直接與服務(wù)器進(jìn)行通信,以便于從服務(wù)器獲取應(yīng)用程序更新和用戶(hù)數(shù)據(jù)。但經(jīng)過(guò)一段時(shí)間的研究實(shí)踐后,發(fā)現(xiàn)此種方式存在一些缺點(diǎn)。首先C2DM內(nèi)置于Android的2.2系統(tǒng)上,不能向下兼容以前的Android系統(tǒng);其次C2DM需要依賴(lài)于Google官方提供的C2DM服務(wù)器,因?yàn)閲?guó)內(nèi)訪問(wèn)Google網(wǎng)站經(jīng)常出現(xiàn)問(wèn)題,所以如果想要正常使用,我們開(kāi)發(fā)的App Server必須也在國(guó)外,這一點(diǎn)對(duì)于開(kāi)發(fā)一般應(yīng)用的開(kāi)發(fā)者來(lái)說(shuō)是很難實(shí)現(xiàn)的,讓開(kāi)發(fā)者望塵莫及。
3.2 MQTT協(xié)議實(shí)現(xiàn)消息推送。MQTT是由IBM公司提供的,是一個(gè)輕量級(jí)的消息發(fā)布/訂閱協(xié)議,它是實(shí)現(xiàn)基于手機(jī)客戶(hù)端的消息推送服務(wù)器的理想解決方案。我們可以從網(wǎng)站下載wmqtt.jar,編寫(xiě)客戶(hù)端與服務(wù)器端實(shí)現(xiàn)消息推送。
3.3 RSMB實(shí)現(xiàn)消息推送。RSMB(Really Small Message Broker)也是由IBM公司提供的,是一個(gè)簡(jiǎn)單的MQTT代理,它負(fù)責(zé)接收來(lái)自服務(wù)器的消息并將其轉(zhuǎn)發(fā)給指定的移動(dòng)設(shè)備。
3.4 XMPP協(xié)議實(shí)現(xiàn)消息推送。XMPP,可擴(kuò)展通訊和表示協(xié)議,是基于可擴(kuò)展標(biāo)記語(yǔ)言XML的協(xié)議,它用于即時(shí)消息以及在線探測(cè)。實(shí)際上Google官方的C2DM服務(wù)器底層也是采用的XMPP協(xié)議進(jìn)行的封裝。
Android pn是一個(gè)基于XMPP協(xié)議的Java開(kāi)源消息推送的實(shí)現(xiàn),它包含了完整的客戶(hù)端和服務(wù)器端。它是基于open fire進(jìn)行的修改,服務(wù)器端是采用Java語(yǔ)言spring框架實(shí)現(xiàn)的,服務(wù)器包含兩個(gè)部分,一個(gè)是偵聽(tīng)在5222端口上的XMPP服務(wù),負(fù)責(zé)與客戶(hù)端的XMPP Connection類(lèi)進(jìn)行通信,作用是用戶(hù)注冊(cè)和身份認(rèn)證,并發(fā)送推送通知消息。另外一部分是Web服務(wù)器,采用一個(gè)輕量級(jí)的HTTP服務(wù)器,負(fù)責(zé)接收用戶(hù)的Web請(qǐng)求。服務(wù)器架構(gòu)最上層包含四個(gè)部分,分別是Session Manager,Auth Manager,Presence Manager和Notification Manager。Session Manager負(fù)責(zé)管理客戶(hù)端與服務(wù)器之間的會(huì)話,Auth Manager負(fù)責(zé)客戶(hù)端用戶(hù)認(rèn)證管理,Presence Manager負(fù)責(zé)管理客戶(hù)端用戶(hù)的登錄狀態(tài),Notification Manager負(fù)責(zé)實(shí)現(xiàn)服務(wù)器向客戶(hù)端推送消息功能。
XMPP協(xié)議實(shí)現(xiàn)消息推送這個(gè)方案最大的優(yōu)勢(shì)就是簡(jiǎn)單,它不像C2DM那樣依賴(lài)操作系統(tǒng)版本,也不用擔(dān)心Google服務(wù)器不可用。利用XMPP協(xié)議我們還可以進(jìn)一步對(duì)協(xié)議進(jìn)行擴(kuò)展,實(shí)現(xiàn)更為完善的功能。目前這個(gè)方案只能發(fā)送文字消息,不過(guò)對(duì)于一般消息推送來(lái)說(shuō)足夠了,因?yàn)槲覀儾荒苤竿ㄟ^(guò)推送得到所有的數(shù)據(jù),一般情況下,我們只是利用推送告訴手機(jī)端服務(wù)器發(fā)生了某些改變,當(dāng)客戶(hù)端收到通知以后,再進(jìn)行詳細(xì)信息的查看。通過(guò)對(duì)以上幾種消息推送方式的分析,在手機(jī)城市通中我們采用了XMPP協(xié)議來(lái)實(shí)現(xiàn)消息的推送。
參考文獻(xiàn):
[1]張長(zhǎng)學(xué).移動(dòng)推送技術(shù)面面觀[J].移動(dòng)通信,2011(05).
[2]張逸炎.移動(dòng)終端即時(shí)消息推送系統(tǒng)的應(yīng)用開(kāi)發(fā)[A].第十七界全國(guó)青年通信學(xué)術(shù)年會(huì)論文集,2012.
[3]陳蘇.城市移動(dòng)電子稅務(wù)推送式服務(wù)研究[D].華中科技大學(xué),2012.
[4]仲瑋.基于XMPP協(xié)議的校園實(shí)時(shí)消息推送系統(tǒng)的研究[J].武漢大學(xué)學(xué)報(bào),2012(01).
作者單位:遼寧建筑職業(yè)學(xué)院,遼寧遼陽(yáng) 111000