倪紅軍
(南京師范大學(xué)泰州學(xué)院信息工程學(xué)院,江蘇泰州 225300)
基于Android平臺(tái)的消息推送研究與實(shí)現(xiàn)
倪紅軍
(南京師范大學(xué)泰州學(xué)院信息工程學(xué)院,江蘇泰州 225300)
針對(duì)Android平臺(tái)的智能終端在獲取推送消息時(shí)存在的與服務(wù)器端數(shù)據(jù)同步、費(fèi)電、耗流量和推送成本高等問題,通過(guò)對(duì)傳統(tǒng)Pull和Push方式的簡(jiǎn)單輪詢、短信服務(wù)、持久連接和長(zhǎng)輪詢等四種技術(shù)的分析和對(duì)Android平臺(tái)目前采用的C2DM、MQTT、XMPP等方案的研究,發(fā)現(xiàn)了具體實(shí)現(xiàn)時(shí)可能出現(xiàn)的向下兼容性不好、硬件成本高和性能不穩(wěn)定等不足。探討了一種基于AlarmManager機(jī)制在移動(dòng)終端與服務(wù)器之間維持TCP長(zhǎng)連接來(lái)實(shí)現(xiàn)實(shí)時(shí)推送的方案。最后結(jié)合國(guó)內(nèi)采用該方案的極光推送JPush平臺(tái)設(shè)計(jì)了一個(gè)由服務(wù)器端和Android客戶端組成的校園快訊系統(tǒng)。
消息推送;長(zhǎng)連接;AlarmManager;Android
隨著信息技術(shù)的高速發(fā)展,移動(dòng)互聯(lián)網(wǎng)絡(luò)已經(jīng)成為人們有效獲取信息的一個(gè)絕佳平臺(tái)。特別是Apple推出iPhone、Google推出 Android、Microsoft推出 WP7后,基于這三種系統(tǒng)的智能終端設(shè)備正逐漸代替?zhèn)鹘y(tǒng)的PC機(jī)成為訪問互聯(lián)網(wǎng)的主要工具。但無(wú)論是智能終端設(shè)備用戶還是傳統(tǒng)PC機(jī)用戶要獲取Internet上的各類新聞、商品資訊等信息,一般還是使用瀏覽器在網(wǎng)上搜索,然后在一大堆信息中檢索出自己感興趣的內(nèi)容。這種傳統(tǒng)獲取信息的方式不僅費(fèi)時(shí)、低效,同時(shí)也越來(lái)越不能滿足信息量爆增時(shí)代的用戶需求。對(duì)于因特網(wǎng)提供(如商品資訊發(fā)布商家)希望能夠?qū)⑿畔⒓皶r(shí)或定時(shí)地發(fā)送給預(yù)定用戶,用戶也希望隨時(shí)、隨地即時(shí)地獲取因特網(wǎng)內(nèi)容提供者的信息(如商家的最新商品資訊),這樣,消息推送就應(yīng)運(yùn)而生。
所謂推送技術(shù)就是一種基于C/S(客戶端/服務(wù)器)機(jī)制,由服務(wù)器主動(dòng)將信息發(fā)往客戶端的技術(shù)。其優(yōu)點(diǎn)在于信息發(fā)送的主動(dòng)性和及時(shí)性,可隨時(shí)將信息推送到用戶面前(客戶端)[1]。本文詳細(xì)闡述移動(dòng)互聯(lián)網(wǎng)中四種推送技術(shù)的原理,通過(guò)對(duì)它們優(yōu)缺點(diǎn)和使用場(chǎng)合的分析,探討Android平臺(tái)下實(shí)現(xiàn)消息推送功能的一些解決方案,并結(jié)合國(guó)內(nèi)第三方免費(fèi)消息推送平臺(tái)——JPush(極光推送)設(shè)計(jì)一個(gè)基于 Android平臺(tái)的快訊系統(tǒng)。
應(yīng)用開發(fā)者在開發(fā)需要和服務(wù)器交互的應(yīng)用程序時(shí),基本上都需要獲取服務(wù)器端的數(shù)據(jù),比如火車票查詢系統(tǒng),就需要及時(shí)獲取服務(wù)器上最新的火車票信息。要獲取服務(wù)器上不定時(shí)更新的信息,通常采用兩種方式:①Pull(拉)的方式,即客戶端每隔一段時(shí)間訪問服務(wù)器,看是否有更新的信息;②Push(推送)的方式,即在服務(wù)器端有新信息后,就自動(dòng)將最新的信息Push到客戶端[2-4]。目前,移動(dòng)互聯(lián)網(wǎng)中采用Pull和Push方式的具體技術(shù)主要包括下面4種。
簡(jiǎn)單輪詢技術(shù)實(shí)現(xiàn)時(shí)要求客戶端應(yīng)用程序定時(shí)與服務(wù)器進(jìn)行連接,并查詢是否有新的消息到達(dá)。它的實(shí)質(zhì)是一種Pull方式,采用此方式進(jìn)行應(yīng)用開發(fā)時(shí),需要選擇一個(gè)合適的輪詢間隔時(shí)間,如果間隔時(shí)間太長(zhǎng),可能會(huì)導(dǎo)致某些消息延遲;如果間隔時(shí)間太短,則會(huì)大量消耗網(wǎng)絡(luò)帶寬和電池電量[5]。而對(duì)于Android平臺(tái)的移動(dòng)終端的網(wǎng)絡(luò)流量和電池電量在使用時(shí)都是受限制的,所以此方式一般適用于對(duì)實(shí)時(shí)性要求不高的場(chǎng)合,而不適用于Android平臺(tái)的消息推送。
SMS技術(shù)是通過(guò)發(fā)送二進(jìn)制短信到移動(dòng)客戶端,來(lái)達(dá)到通知用戶的目的。客戶端通過(guò)攔截該類短信,分析短信PDU的數(shù)據(jù)來(lái)了解服務(wù)器的意圖,然后進(jìn)行相應(yīng)的操作處理。它是一種典型的Push方式,Push短信是通過(guò)Wap Push來(lái)承載,內(nèi)容包括頭部和數(shù)據(jù)兩部分,頭部中包含有目的端口和源端口[6-7]。在Android平臺(tái)的客戶端具體實(shí)現(xiàn)時(shí),可以由下面三個(gè)步驟完成:
(1)客戶端靜態(tài)注冊(cè)一個(gè)廣播接收器。即使應(yīng)用不在運(yùn)行,廣播接收器也可以攔截短信;
(2)當(dāng)Push短信下發(fā)時(shí),Android系統(tǒng)發(fā)起Intent激活廣播接收器;
(3)廣播接收器攔截短信內(nèi)容后,對(duì)短信內(nèi)容進(jìn)行解析,了解服務(wù)器的數(shù)據(jù)發(fā)生何種變化,然后由Android客戶端應(yīng)用程序進(jìn)行相應(yīng)處理。
SMS技術(shù)可以實(shí)現(xiàn)完全的實(shí)時(shí)操作,對(duì)Android平臺(tái)的移動(dòng)終端而言,實(shí)現(xiàn)上述三個(gè)步驟是比較容易的,而且電量和數(shù)據(jù)流量的消耗都不算大,但是該技術(shù)的成本相對(duì)比較高,實(shí)現(xiàn)時(shí)需要向移動(dòng)公司繳納相應(yīng)的費(fèi)用[8],所以此方式在對(duì)實(shí)時(shí)要求比較高而且不考慮成本的場(chǎng)合,可以用于Android平臺(tái)的消息推送。
持久連接實(shí)現(xiàn)時(shí)要求客戶端和服務(wù)器端之間建立長(zhǎng)久連接,只要服務(wù)器端有消息要發(fā)送,直接Push就可完成。這種方式可以實(shí)現(xiàn)Push消息的及時(shí)性和實(shí)時(shí)性,但是需要與服務(wù)器端長(zhǎng)期保持連接,不僅消耗移動(dòng)終端的電量,而且更容易消耗服務(wù)器資源。
長(zhǎng)輪詢也稱為持久輪詢,是客戶端發(fā)起請(qǐng)求后服務(wù)器端首先將該請(qǐng)求掛起(不返回響應(yīng)),直到超時(shí)、異?;蛐枰幚眄憫?yīng)(Push消息需要發(fā)送)時(shí),再返回響應(yīng);客戶端收到響應(yīng)后再次請(qǐng)求(即輪詢)服務(wù)器端,并處理響應(yīng)[9-10]。這種方式解決了簡(jiǎn)單輪詢的實(shí)時(shí)性差的問題,也解決了持久連接消耗服務(wù)器資源的問題,但還是會(huì)消耗移動(dòng)終端的電量,每次收到數(shù)據(jù)之后需要重新發(fā)送連接,如果傳輸?shù)臄?shù)據(jù)量比較少,那么建立連接的時(shí)間就會(huì)成為主要開銷,有效利用率低。
由于Android操作系統(tǒng)在內(nèi)存占有率較高的情況下會(huì)自動(dòng)Kill系統(tǒng)服務(wù),所以運(yùn)行著移動(dòng)終端推送服務(wù)很有可能會(huì)被系統(tǒng)Kill掉。這樣,就是在不考慮服務(wù)器資源消耗和電量消耗的情況下,持久連接和長(zhǎng)輪詢方式在某種程度下也不能滿足應(yīng)用需要,而簡(jiǎn)單輪詢和SMS也存在著明顯的不足。為了彌補(bǔ)這些不足也出現(xiàn)了一些專門針對(duì)Android平臺(tái)消息推送的方案:
(1)Google官方的 C2DM 云端推送[11]。在Android平臺(tái)上,Google提供了C2DM(Cloud to Device Messaging)服務(wù),它是一個(gè)用來(lái)幫助開發(fā)者從服務(wù)器向Android應(yīng)用程序發(fā)送信息的服務(wù),該服務(wù)提供了一個(gè)簡(jiǎn)單的、輕量級(jí)的機(jī)制,允許服務(wù)器可以通知Android應(yīng)用程序直接與服務(wù)器進(jìn)行通信,以便從服務(wù)器獲取Android應(yīng)用程序更新和最新用戶數(shù)據(jù)。?但是這個(gè)服務(wù)存在三個(gè)主要缺陷:①C2DM內(nèi)置于Android 2.2版本以上系統(tǒng),無(wú)法兼容以前版本;②C2DM需要依賴于Google官方提供的C2DM服務(wù)器,對(duì)國(guó)內(nèi)網(wǎng)絡(luò)用戶來(lái)說(shuō),由于網(wǎng)絡(luò)環(huán)境的影響,可能不能達(dá)到預(yù)期效果;③由于該服務(wù)并沒有與硬件系統(tǒng)集成,國(guó)內(nèi)硬件廠商在生產(chǎn)Android平臺(tái)移動(dòng)終端時(shí),可能會(huì)把Google原生的C2DM服務(wù)去掉,這樣也會(huì)導(dǎo)致推送功能不能實(shí)現(xiàn)。
(2)使用IBM的MQTT協(xié)議實(shí)現(xiàn)推送。MQTT是一種輕量級(jí)的、基于代理的“發(fā)布/訂閱”模式的消息傳輸協(xié)議[12]。該協(xié)議簡(jiǎn)潔、小巧、可擴(kuò)展性強(qiáng)、省流量、省電,目前已經(jīng)應(yīng)用到企業(yè)領(lǐng)域。但是技術(shù)還不夠成熟、實(shí)現(xiàn)較復(fù)雜、部署硬件成本較高,不太適合小型企業(yè)Android平臺(tái)移動(dòng)終端的消息推送服務(wù)。
(3)使用IETF標(biāo)準(zhǔn)化的XMPP協(xié)議實(shí)現(xiàn)推送。XMPP的前身是 Jabber,它是基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)的協(xié)議,用于即時(shí)消息和在線探測(cè)[13-14]。該協(xié)議成熟、強(qiáng)大、可擴(kuò)展性強(qiáng),目前主要應(yīng)用于許多聊天系統(tǒng)中,且有開源的Java版的開發(fā)實(shí)例androidpn。但是協(xié)議復(fù)雜、冗余、費(fèi)流量、費(fèi)電,部署成本高。筆者部署androidpn時(shí),經(jīng)過(guò)測(cè)試也發(fā)現(xiàn)了一些問題:①時(shí)間過(guò)長(zhǎng)時(shí),就再也不收不到推送信息;②消息一旦從服務(wù)器推送出去,不管有沒有推送到客戶端,就不再管理;③性能也不夠穩(wěn)定。
對(duì)上述三種推送方案的分析,比較客觀地反映出它們的優(yōu)缺點(diǎn),在實(shí)際應(yīng)用開發(fā)中,都將影響使用。
因?yàn)锳ndroid平臺(tái)的移動(dòng)終端硬件、電量、網(wǎng)絡(luò)流量的限制,移動(dòng)互聯(lián)網(wǎng)應(yīng)用在設(shè)計(jì)上跟傳統(tǒng) PC上的應(yīng)用有很大不同,需要根據(jù)移動(dòng)終端硬件的自身特點(diǎn),盡量節(jié)省電量和流量,同時(shí)又要盡可能地保證數(shù)據(jù)能及時(shí)到達(dá)客戶端。為了解決數(shù)據(jù)同步的問題,在移動(dòng)終端上通常采用兩種方法。一種是移動(dòng)終端定時(shí)去服務(wù)器上查詢數(shù)據(jù),也就是Pull;另一種是移動(dòng)終端與服務(wù)器之間維護(hù)一個(gè)TCP長(zhǎng)連接,當(dāng)服務(wù)器有數(shù)據(jù)時(shí),實(shí)時(shí)推送到移動(dòng)終端,即Push。根據(jù)前面的分析,已經(jīng)很明顯看出Pull方式實(shí)時(shí)性較差,不太適合推送,而長(zhǎng)連接Push方式在這個(gè)方面有很大的優(yōu)勢(shì),但是,由于長(zhǎng)連接Push在維持連接時(shí)耗電,所以改進(jìn)方案就是從節(jié)電方面考慮。要維持長(zhǎng)連接,必須依靠循環(huán)定時(shí)執(zhí)行任務(wù)來(lái)實(shí)現(xiàn),而Android系統(tǒng)中定時(shí)運(yùn)行任務(wù)的方法有兩種,一種方法用 Timer,另一種是AlarmManager[15-16]。Timer類需要用 WakeLock 讓 CPU保持喚醒狀態(tài),這樣會(huì)大量消耗手機(jī)電量,大大縮短移動(dòng)終端待機(jī)時(shí)間,不能滿足應(yīng)用需求。AlarmManager是Android系統(tǒng)封裝的用于管理RTC的模塊,RTC(Real Time Clock)是一個(gè)獨(dú)立的硬件時(shí)鐘,可以在CPU休眠時(shí)正常運(yùn)行,在預(yù)設(shè)的時(shí)間到達(dá)時(shí),通過(guò)中斷喚醒CPU。這樣當(dāng)AlarmManager定時(shí)執(zhí)行任務(wù)時(shí),CPU可以正常休眠,可以大大節(jié)約電量消耗。現(xiàn)在國(guó)內(nèi)的第三方商用平臺(tái)——極光推送就是采用的這種方式,該平臺(tái)只要注冊(cè)后就可以直接免費(fèi)使用,完全能夠達(dá)到推送效果。
Push是個(gè)基礎(chǔ)服務(wù),不管是以開源方案為基礎(chǔ)搭建,還是完全自主研發(fā),投入都是比較大的,需要有網(wǎng)絡(luò)服務(wù)方面的專業(yè)團(tuán)隊(duì)。投入很大的開發(fā)成本后,隨著客戶端用戶量不斷增大,其后期擴(kuò)容、維護(hù)的工作量,也都是不斷上升的,難度也越來(lái)越大。所以,大多數(shù)應(yīng)用開發(fā)者,不是去自己搭建Push這個(gè)基礎(chǔ)服務(wù),而是考慮去使用第三方提供的專業(yè)的服務(wù)。下面就以國(guó)內(nèi)免費(fèi)的極光推送為例介紹Android平臺(tái)的快訊系統(tǒng)實(shí)現(xiàn)過(guò)程??煊嵪到y(tǒng)實(shí)現(xiàn)包括服務(wù)器端和Android客戶端兩個(gè)部分。
服務(wù)器端的主要功能就是通過(guò)Jpush第三方平臺(tái)向客戶端發(fā)送推送消息。為了實(shí)現(xiàn)這個(gè)功能,需要有使用該平臺(tái)的開發(fā)者帳號(hào)應(yīng)用標(biāo)識(shí)(AppKey),實(shí)現(xiàn)步驟如下:
(1)創(chuàng)建開發(fā)者帳號(hào)。登錄極光推送注冊(cè)頁(yè)面(https://www.jpush.cn/accounts/signup/),出現(xiàn)注冊(cè)頁(yè)面,分別在對(duì)應(yīng)的文本框中輸入相關(guān)信息后,出現(xiàn)如圖1所示登錄頁(yè)面。
圖1 登錄界面
(2)創(chuàng)建應(yīng)用。登錄后,點(diǎn)擊“創(chuàng)建應(yīng)用”按鈕,出現(xiàn)如圖2所示的創(chuàng)建應(yīng)用程序頁(yè)面,在應(yīng)用程序名稱和Android包名的文本框中分別輸入“泰院快訊”和cn.edu.nnutc.message,開發(fā)者在輸入包名時(shí)要保證與應(yīng)用開發(fā)過(guò)程中的源程序完全一致。然后點(diǎn)擊“創(chuàng)建我的應(yīng)用”按鈕,就可以生成一個(gè)應(yīng)用標(biāo)識(shí)(AppKey),開發(fā)者開發(fā)應(yīng)用時(shí),AndroidManifest.xml配置文件中的包名和AppKey與這兒要完全一致。
(3)下載應(yīng)用Example。應(yīng)用創(chuàng)建成功后,即進(jìn)入“應(yīng)用詳情”頁(yè)面,此時(shí)有一個(gè)“下載 Android Example”按鈕,點(diǎn)擊該按鈕后,即可獲得一個(gè)壓縮文件包,解壓后,將該Android Example項(xiàng)目導(dǎo)入Eclipse,并修改 AndroidManifest.xml配置文件中的包名和AppKey。其他信息的修改與正常的Android應(yīng)用開發(fā)一樣,這兒不再贅述。筆者在開發(fā)快訊系統(tǒng)時(shí),并沒有使用Android Example示例項(xiàng)目,而是根據(jù)實(shí)際應(yīng)用功能需求設(shè)計(jì)并實(shí)現(xiàn)快訊系統(tǒng)。
圖2 創(chuàng)建應(yīng)用頁(yè)面
(1)導(dǎo)入SDK開發(fā)包到應(yīng)用程序項(xiàng)目,下載Jpush Android SDK 并解壓,將 jpush-sdk-release1.x.y.jar文件復(fù)制開發(fā)的應(yīng)用程序項(xiàng)目libs目錄下;
(2)配置 AndroidManifest.xml,根據(jù) SDK 壓縮包里的AndroidManifest.xml樣例文件配置應(yīng)用程序項(xiàng)目的AndroidManifest.xml文件,即復(fù)制樣例文件中備注為"Required"的部分到應(yīng)用程序項(xiàng)目的配置文件中,將備注為替換包名的部分替換為應(yīng)用程序的包名,將AppKey替換為在4.2中創(chuàng)建應(yīng)用時(shí)獲得的Key值;
(3)添加代碼,Jpush SDK提供了 cn.jpush.android.api.JpushInterface 類,在 MainActivity.java 類的onCreate()方法中使用JPushInterface.init(Context)語(yǔ)句 初 始 Jpush SDK,然 后 使 用CustomPushNotificationBuilder類定制通知欄樣式,代碼如下:
(4)使用BroadcastReceiver接收J(rèn)Push平臺(tái)推送的消息,新建一個(gè)繼承 BroadcastReceiver的MyBroadCastReceiver.java文件,Jpush平臺(tái)推送的消息Bundle由客戶端的BroadcastReceiver監(jiān)聽接收后,再傳遞給顯示界面NoticeActivity.java,效果如圖3所示。其關(guān)鍵代碼如下:
圖3 推送消息顯示界面
本文通過(guò)對(duì)傳統(tǒng)的消息推送方式原理分析和常見的Android平臺(tái)消息推送方案研究,發(fā)現(xiàn)了它們?cè)谙⑼扑蛯?shí)現(xiàn)時(shí)存在數(shù)據(jù)不同步、費(fèi)電和耗流量等問題,并根據(jù)問題產(chǎn)生的原因,提出了使用AlarmManager機(jī)制維持Android終端與服務(wù)器之間維持TCP長(zhǎng)連接的一個(gè)消息推送方案,設(shè)計(jì)并實(shí)現(xiàn)了一種基于第三方平臺(tái)Jpush的校園快訊系統(tǒng)。詳細(xì)闡述了校園快訊系統(tǒng)服務(wù)器端和Android客戶端的實(shí)現(xiàn)過(guò)程,經(jīng)過(guò)系統(tǒng)的運(yùn)行和測(cè)試,在TCP長(zhǎng)連接的維持下,保證了數(shù)據(jù)推送的同步,節(jié)省了Android客戶端的流量和電量,達(dá)到了預(yù)期效果。
[1] 沈洪洲,宗乾進(jìn),袁勤儉.應(yīng)用Google云消息框架C2DM實(shí)現(xiàn)商務(wù)信息推送服務(wù)[J].現(xiàn)代圖書情報(bào)技術(shù),2012,28(6):78-83.
SHEN Hong-zhou,ZONG Qian-jin,YUAN Qin-jian.Implementation of Commerce Information Push Service Using Google C2DM[J].New Technology of Library and Information Service ,2012,28(6):78-83.
[2] 華 春,胡 明.Push和Pull兩種調(diào)度機(jī)制的仿真分析與研究[J].光通信技術(shù),2008,32(10):57-59.
HUA Chun,HU Ming.Analysis and simulation to push scheme and pull scheme[J].Optical Communication Technology,2008,32(10):57-59.
[3] SMILJANIC A.Rate and Delay Guarantees Provided by Clos Packet Switches With Load Balancing[J] .IEEE/ACM Transactions on NetWorking,2008,16(1):170-181.
[4] Thompson T.The Android Mobile Phone Platform[J].The World of Software Development,2008,33(9):40-47.
[5] 張長(zhǎng)學(xué),張 偉,董智明.移動(dòng)推送技術(shù)面面觀[J].移動(dòng)通信,2011,35(5):21-27.
ZHANG Chang-xue,ZHANG Wei,DONG Zhi-ming. Aspects of mobile Push Technology[J].Mobile Communications,2011,35(5):21-27.
[6] 梁 鵬,歐陽(yáng)秀平,董 越,等.PUSH技術(shù)在WAP2.0中的應(yīng)用[J].電信網(wǎng)技術(shù),2003(12):56-60.
LIANG Peng,OU YangXiu-ping,DONG Yue,etal. Push Technology In the Application of WAP2.0[J].Telecommunication NetWork Technology,2003(12):56-60.
[7] 張思全,張占松.WAP2.0 PUSH技術(shù)在無(wú)線網(wǎng)絡(luò)中的應(yīng)用[J].電子質(zhì)量,2003(1):124-127.
ZHANG Si-quan,ZHANG Zhan-song.Wap2.0 And Push Application In Wireless NetWork[J].Electronics Quality,2003(1):124-127.
[8] 周 虹,張 蓓,姜愛蓉,等.館藏書目信息自助短信推送服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代圖書情報(bào)技術(shù),2011(7-8):127-131.
ZHOU Hong,ZHANG Bei,JIANG Ai-rong,et al.Design and Implementation of Library Bibliography Information Self SMS Push Service[J].New Technology of Library and Information Service ,2011,(7-8):127-131.
[9] 余 勇.基于ASP.NET及COMET技術(shù)的WEB即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦與電信,2010(9):36-40.
YU Yong.Design and Practice of the Web Instant Messaging System Based on ASP.NET and Comet Technology[J].Computer &Telecommunication,2010(9):36-40.
[10] 戚永軍,翟智平,耿娟平.基于Comment的Web即時(shí)通訊系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2012,39(10):72-75.
QI Yong-jun, ZHAIZhi-ping,GENG Juan-ping. Design and Implementation on Web Instant Messaging System Based on Comet[J].Computer Science.2012,39(10:72-75.
[11]Google.AndroidCloudtoDeviceMessagingFramework[EM/OL].[2012-04-09].https://developers.google.com/android/C2DM.
[12] Android 推送方案探討[EM/OL].http://wenku.baidu.com/view/ea7e06d17f1922791688e86b.html.
[13] 張 京,劉甫迎.基于 Android云計(jì)算消息框架(C2DM)的FoxNews_MID手持移動(dòng)系統(tǒng)的研究[J].計(jì)算機(jī)科學(xué),2011,38(10A):461-463.
ZHANG Jing,LIU Fu-ying.Study and Implementation of FoxNews-MID Based on Android C2DMK[J].Computer Science,2011,38(10A):461-463.
[14] 劉甫迎,劉 焱.Android移動(dòng)編程實(shí)用教程[M].北京:電子工業(yè)出版社,2011.
[15] Android廣播事件處理鬧鐘實(shí)例[EM/OL].http://wenku.baidu.com/view/3c2f7f916bec0975f465e277.html.
[16] 深入學(xué)習(xí) android 之 AlarmManager.[EM/OL].http://jinguo.iteye.com/blog/799778.
Research and Implementation of Message Push Based on Android
NI Hong-jun
(School of Information Engineering,Taizhou College,Nanjing Normal University,Taizhou 225300,China)
When the terminal for Android Gets Push messages and has data synchronization with the server,it leads to high costs of electricity,consumption flow and high cost of push .To resolve these problems,this paper analyzes four kinds of technology of the traditional Pull and Push,i.e.,in the way of simple polling,SMS services,persistent connections and long polling.,and Rresearch on Android platform currently used in the scheme of C2DM,MQTT,and XMPP.It is fFound that at the concrete implementation down has bad compatibility and high cost of hardware,and performance is not stable,etc.The paper Ddiscusses a scheme of real-time message push for by using AlarmManager mechanism to maintain TCP long connection between the terminal and the server maintenance TCP long connection.Finally,combining JPush platform to design a alert system of campus is designed to composed theof Sserver and the Android Clientclients.
message push;long connection;AlarmManager;Android
TN 929.53
A
1006-7167(2014)05-0096-05
2013-08-12
Google中國(guó)大學(xué)合作部2012年Android創(chuàng)新(開發(fā))重點(diǎn)資助項(xiàng)目(SOW12-11/64005799)
倪紅軍(1975-),男,江蘇靖江人,碩士,講師,主要研究方向?yàn)楣芾硇畔⑾到y(tǒng),Android應(yīng)用開發(fā)。
Tel.:13901433220;E-mail:tznkf@163.com