狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

android中實(shí)現(xiàn)消息推送

admin
2013年2月26日 0:4 本文熱度 4544

    關(guān)于服務(wù)器端向Android客戶端的推送,主要有三種方式:輪詢,應(yīng)用程序應(yīng)當(dāng)階段性的與服務(wù)器進(jìn)行連接并查詢是否有新的消息到達(dá),你必須自己實(shí)現(xiàn)與服務(wù)器之間的通信,例如消息排隊(duì)等。而且你還要考慮輪詢的頻率,如果太慢可能導(dǎo)致某些消息的延遲,如果太快,則會(huì)大量消耗網(wǎng)絡(luò)帶寬和電池SMS(通過發(fā)送短信并解析短信內(nèi)容來獲取服務(wù)器端的指令),這個(gè)出現(xiàn)的問題是很難找到免費(fèi)的網(wǎng)關(guān)來發(fā)送短信;最后就是持久連接,主要是Socket通訊,這個(gè)解決了性能問題,但是耗電問題依舊沒能解決。


    在這里,我們主要介紹的是第三種,用持久連接的方式來進(jìn)行推送。現(xiàn)在比較成熟的及時(shí)消息傳遞協(xié)議共有四種,而無疑最為主流就是XMPP協(xié)議,它是一種基于XML的傳遞協(xié)議,具有很強(qiáng)的靈活性和可擴(kuò)展性。它的特點(diǎn)是將復(fù)雜性從客戶端轉(zhuǎn)移到了服務(wù)器端。在網(wǎng)上可以找到很多的XMPP資料,這里就不在贅述了,不然越扯越多。總之,XMPP主要顯著的優(yōu)點(diǎn)主要有以下幾個(gè)方面:


1、 分布式  任何人都可以運(yùn)行自己的XMPP服務(wù)器,它沒有主服務(wù)器


2、 安全性很高。使用SASLTLS等技術(shù)的可靠安全性


3、 開發(fā)性 它是開源的,易于進(jìn)行學(xué)習(xí)和了解


4、 跨平臺(tái)  毋庸置疑,使用的XML進(jìn)行傳輸?shù)?/SPAN>


說完優(yōu)點(diǎn),我們言歸正傳,基于XMPP協(xié)議的java開發(fā)有一個(gè)開源框架,那就是smack,它主要封裝了一些XMPP的實(shí)現(xiàn)。而如果把它直接用在Android上是不行的,因?yàn)?/SPAN>android缺少了一些java的類庫(kù),于是一個(gè)改進(jìn)版的asmack誕生了,它是專門為android而改進(jìn)的android smack。而另外一個(gè)開源框架的誕生,則是對(duì)在引用smack的基礎(chǔ)上實(shí)現(xiàn)和服務(wù)器端的持久連接,以實(shí)現(xiàn)服務(wù)器對(duì)客戶端的推送,那就是android push notification,簡(jiǎn)稱androidpn


Androidpn在客戶端集成了asmack。這樣就可以很容易的簡(jiǎn)立一個(gè)和服務(wù)器端的基于xmpp協(xié)議的socket連接。Androidpn的客戶端中,進(jìn)行管理連接的類是XmppManager,它主要用來管理連接的信息,比如XMPP的端口、IP、登錄的用戶名密碼,以及對(duì)連接的維護(hù)。為什么還有用戶名和密碼?這不得不提到XMPP的具體細(xì)節(jié)。整個(gè)服務(wù)器端和客戶端的通信是基于一個(gè)session(會(huì)話)過程,會(huì)話開始,首先會(huì)指定服務(wù)器的端口號(hào),然后把上述提到的信息發(fā)送到服務(wù)器端,怎么發(fā)送消息的呢?以根節(jié)點(diǎn)的方式開始傳遞,只有在服務(wù)器和客戶端關(guān)閉的時(shí)候才會(huì)發(fā)送它的結(jié)束標(biāo)記。客戶端通過XMPP協(xié)議只用做的就是接收消息,而所有其它的操作都交給服務(wù)器,比如管理連接、消息保存等等,這樣就很大程度的減輕了客戶端的負(fù)擔(dān)。那么客戶端和服務(wù)器端的消息回應(yīng)是如何實(shí)現(xiàn)的?如要通過一個(gè)ID來標(biāo)識(shí),具體細(xì)節(jié)可以去查看XMPP協(xié)議。


一旦注冊(cè)綁定后,服務(wù)器端就和客戶端建立了連接,客戶端只用負(fù)責(zé)去接收消息。所以當(dāng)我們應(yīng)用Androidpn的時(shí)候,客戶端會(huì)非常的簡(jiǎn)單。而在服務(wù)器端,Androidpn又做了什么呢?


服務(wù)器端的展示方面,androidpn主要用到的技術(shù)是SpringHibernate。主要是用來展示用戶狀態(tài)和發(fā)送信息用的。


這方面的技術(shù)已經(jīng)比較成熟,就不再細(xì)說了,主要要說的還是XMPP的管理。在服務(wù)器端的源碼中一個(gè)org.androidpn.server.xmpp.net.Connection類,主要是代表一個(gè)服務(wù)器上的XMPP連接,注意只是一個(gè),它可以確保在服務(wù)器關(guān)閉的時(shí)候,發(fā)送一個(gè)標(biāo)記到客戶端,告知連接斷開,需重新連接。


org.androidpn.server.xmpp.session.SessionManager主要用戶管理所有會(huì)話,比如連接斷開,刪除session以及建立連接,添加session等等。


而在管理Socket連接的時(shí)候,androidpn采用了MINA框架來進(jìn)行管理,MINA的優(yōu)點(diǎn)就是改變了我們傳統(tǒng)的管理socket的方式,比如沒建立一個(gè)socket開一個(gè)線程,而MINA可以實(shí)現(xiàn)多個(gè)線程管理N多個(gè)用戶。在處理高并發(fā)的推送上無疑是有巨大的好處的。


合理的利用監(jiān)聽器來管理session,也是androidpn的優(yōu)點(diǎn)。在安全性方面,制定了TLS(安全傳輸層)策略,并卻采用了安全認(rèn)證,這些方面都做的不錯(cuò)。


當(dāng)然,不可避免的30秒鐘的心跳包還是必不可少的。


總之,用Androidpn好處有以下方面:采用完全開放的XMPP協(xié)議進(jìn)行數(shù)據(jù)傳輸(QQMSNGTalk等都是采用的這種協(xié)議);良好的框架支持(專門為android 而產(chǎn)生的推送框架asmack,以及很好的管理socket的框架MINA,都是很成熟的產(chǎn)品);完全開放的源代碼(我們可以在androidpn的基礎(chǔ)上進(jìn)行修改,來滿足我們的任何需求變更);大大的減少了客戶端的代碼,降低了android的開發(fā)難度。缺點(diǎn)不言而喻,使用了太多的框架,如果想要改一些具體的實(shí)現(xiàn),可能會(huì)遷移發(fā)動(dòng)全身。不過如果你個(gè)懶人的話,完全滿足你的需求了。


最后是我整理的androidpn的源碼,完全可以使用。原來的服務(wù)器端用的jetty框架來代替tomcat的,我把它又重新整合到了tomcat下,可以完美的和你的服務(wù)器端融合。懶人們,來吧~~由于文件過大,所以用了外連~~喜歡的就去下載吧。。只需要改下client的raw文件夾下的ip地址就可以運(yùn)行。。androidpn下載地址http://115.com/file/bhkfse3i# Androidpn.rar


 


如果需要使用輪詢方式,則可以使用handler實(shí)現(xiàn),很簡(jiǎn)單如下


      private boolean isRunning = true;


      private final int LOOP = 1;


      public Handler handler = new Handler(){


                       public void handleMessage(Message msg){


                              switch(msg.what){


                                                            case LOOP: 


                                                                             //1、業(yè)務(wù)邏輯處理代碼


                                                     if(isRunning){


                                                          //2、向服務(wù)器請(qǐng)求數(shù)據(jù)代碼


                                                       Message message = obtainMessage(LOOP);


                                                       sendMessagedelayed(message ,30*1000);


                                                            break;


                                     }


                                        }


                        }


      }


該文章在 2013/2/26 0:04:17 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved