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