基于Android平臺的報警信息推送
發(fā)布時間:2018-07-02 來源: 感悟愛情 點擊:
[摘 要]消息推送在實際生活中有著廣泛的應(yīng)用,尤其是對重要的信息推送更是有著極高的需求。當(dāng)用戶需要實時的獲取重要信息時,通過消息推送技術(shù)能夠?qū)缶畔⑼扑椭罙ndroid移動端。本文主要介紹了以報警信息為例的消息推送工作原理。
[關(guān)鍵詞]Android平臺;消息推送;長連接;
中圖分類號:S145 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-914X(2018)24-0371-01
0 前言
消息推送是現(xiàn)今App的重要組成功能部分,其中報警信息的推送是消息推送結(jié)構(gòu)的主要分支。實體設(shè)備發(fā)生故障時將會造成嚴(yán)重影響,因此及時的發(fā)現(xiàn)和對故障的處理極其重要。當(dāng)某設(shè)備發(fā)生故障時,報警信息應(yīng)第一時間的發(fā)送至移動智能設(shè)備。即使在App后臺運行或未打開時,報警信息也能準(zhǔn)確推送給使用者。
1 消息推送原理
推送技術(shù)的基礎(chǔ)思想是將瀏覽器主動查詢信息改為服務(wù)器主動發(fā)送信息,用戶端要保證與服務(wù)器的連接。因此推送的基礎(chǔ)原理是維護一個長連接,如果使用socket連接將對服務(wù)器帶來巨大的消耗。因此出現(xiàn)了MQTT這種輕量級低消耗協(xié)議來維護長連接。消息推送技術(shù)的實現(xiàn)技術(shù)主要有以下幾種:
。1)基于HTTP長連接的消息推送技術(shù)
長連接(長輪詢long-polling)技術(shù)建立在HTTP基礎(chǔ)上,在請求/應(yīng)答的模式下構(gòu)建出一種“服務(wù)器推送”的處理措施,并發(fā)展為Comet技術(shù)框架。Comet基于HTTP長連接技術(shù),無需安裝第三方插件。在HTTP的版本中,HTTP/1.1能夠很好的支持長連接。
。2)基于消息中間件的消息推送技術(shù)
消息中間件通過可靠而高效的的消息傳遞體系實現(xiàn)了平臺相關(guān)的信息溝通,普遍的運用在分布式系統(tǒng)的搭建。對于消息中間件而言,由于其結(jié)構(gòu)較為獨特,不但能夠在實時消息通信方面實現(xiàn)零距離傳輸,并且對于消息推送系統(tǒng)的構(gòu)建也十分便捷。
。3)基于SMS的消息推送技術(shù)
在Android系統(tǒng)中,SMS可以對消息進(jìn)行攔截,同時對消息內(nèi)容解析處理,從而獲得服務(wù)器的意圖進(jìn)而與服務(wù)器進(jìn)行良好的通信。然而,目前用于發(fā)送消息的網(wǎng)關(guān)均需收費,因此將帶來較高的成本。
因此我們這里采用了基于HTTP長連接的原理來實現(xiàn)消息推送。
2 消息推送的實現(xiàn)
基于Android平臺的報警信息推送的結(jié)構(gòu)圖如圖1所示。
移動智能設(shè)備在報警推送模塊中起著橋梁的作用,它連接了智能門店管理系統(tǒng)App與服務(wù)器,通過底層I/O管理從服務(wù)器端獲取信息并推送給App。同時它會對消息進(jìn)行編解碼,轉(zhuǎn)換數(shù)據(jù)成為App可識別的格式。除此以外,它還負(fù)責(zé)App的長連接保持。
連接管理主要由I/O管理、編解碼器和長連接。長連接的實現(xiàn)是通過發(fā)送心跳包來實現(xiàn)的。系統(tǒng)定時向服務(wù)器發(fā)送心跳包,一旦發(fā)送失敗則證明連接斷開,此時將重啟連接機制。
App接口是智能門店管理系統(tǒng)App使用消息推送功能的接口,智能門店管理系統(tǒng)通過調(diào)用該接口獲取服務(wù)器端發(fā)送的數(shù)據(jù),也同樣通過該接口反饋信息至服務(wù)器。
。1)連接與發(fā)送消息的實現(xiàn)
連接服務(wù)器需要用到asmack類庫所提供的XMPPConnection,XMPPConnection是一個封裝了底層Socket連接的類,基于TCP/IP協(xié)議完成與服務(wù)器端的連接。同時為其綁定讀寫器(PacketReader,PacketWriter)。由其完成對數(shù)據(jù)的封裝和解析。
我們通過繼承asmack類庫的IQ基類來封裝自己的數(shù)據(jù),在XMPPManager中獲取連接并用編解碼器完成對數(shù)據(jù)的封裝,最后通過PacketWriter反饋消息給服務(wù)器端。
。2)接收推送信息的實現(xiàn)
智能門店管理App接收推送消息的過程是,App通過ServiceManager啟動NotificationService來啟動服務(wù)監(jiān)聽線程池。監(jiān)聽線程中的監(jiān)聽程序負(fù)責(zé)一直監(jiān)聽socket連接的數(shù)據(jù)變化。通過XMPPManager獲取XMPPConnection和數(shù)據(jù)包監(jiān)聽器,并將PacketReader初始化編解碼器綁定數(shù)據(jù)源以準(zhǔn)備處理數(shù)據(jù),時刻監(jiān)聽socket連接數(shù)據(jù)包的變化。當(dāng)服務(wù)器端有數(shù)據(jù)送達(dá)時,監(jiān)聽器會通知PacketReader類接收消息,數(shù)據(jù)源來自于底層Socket。通過parsePackets()將不同類型的消息交給不同的解碼器進(jìn)行處理。服務(wù)器以IQ包的形式發(fā)來消息,因此將通過NotificationIQProvider處理數(shù)據(jù),解析出從服務(wù)器端發(fā)送來的消息內(nèi)容,并且封裝成一個新的消息包notification(IQ的子類)。processPacket()方法將對消息進(jìn)行再次處理,接著想系統(tǒng)監(jiān)聽器的管理器注冊一個監(jiān)聽。當(dāng)有數(shù)據(jù)到來時,相關(guān)的監(jiān)聽都將被觸發(fā)。ListenerNotification會將消息packet交給類ListenerWrapper進(jìn)行處理。ListenerWrapper中的方法notifyListener()將該消息通知給所有監(jiān)聽器。NotificationPacketListener將被服務(wù)器端發(fā)來的消息所觸發(fā),監(jiān)聽到Packet后將其轉(zhuǎn)換為NotificationIQ消息,將消息內(nèi)的屬性內(nèi)容解析出來構(gòu)造一個intent。此時,先向服務(wù)端發(fā)送回執(zhí)消息,接著將intent向Android系統(tǒng)廣播。Android系統(tǒng)中的Broadcast接收器NotificationReceiver負(fù)責(zé)接收NotificationPacketListener廣播的消息,收到intent后取出參數(shù),調(diào)用Notifier發(fā)送消息至系統(tǒng)。Notifier里構(gòu)造一個PendingIntent,設(shè)置廣播的內(nèi)容與標(biāo)題,然后將廣播分發(fā)出去,智能門店管理App將接收到響應(yīng)廣播,從而完成消息的接收。
3 結(jié)語
在移動信息互聯(lián)網(wǎng)迅猛發(fā)展的當(dāng)今社會,人們對信息的實時獲取有著越來越高的要求;贏ndroid平臺的報警信息推送系統(tǒng)將通過長連接技術(shù)建立移動端與服務(wù)端的連接,能夠按用戶定制將對應(yīng)的信息及時的推送到達(dá)。消息推送技術(shù)的穩(wěn)定實現(xiàn)能夠更全面,更及時的滿足用戶對消息推送的需求。
參考文獻(xiàn)
[1] 王龍濤.基于XMPP協(xié)議的服務(wù)器關(guān)鍵技術(shù)研究[D].西安.西安電子科技大學(xué),2008.
[2] 殷昊.基于Android平臺的消息推送能力的研究與實現(xiàn)[D].北京.北京郵電大學(xué),2013.
[3] 張長學(xué),張偉,董智明.移動推送技術(shù)面面觀[J].移動通信2011.
作者簡介
趙雅萍(1992.05.16)女,陜西省西安市人,碩士學(xué)歷,專業(yè):模式識別和智能系統(tǒng)。
相關(guān)熱詞搜索:推送 報警 平臺 信息 Android
熱點文章閱讀