亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android的消息推送的研究與實現(xiàn)

        2018-06-07 08:58:16閆俊英李熙明曹錫貴
        卷宗 2018年9期

        閆俊英 李熙明 曹錫貴

        摘 要:隨著移動互聯(lián)網(wǎng)的快速發(fā)展,消息推送在移動互聯(lián)網(wǎng)領域智能終端的應用越來越廣泛,成為智能終端產品實時發(fā)布信息的一種重要手段。本文主要研究了目前基于Android的消息推送的幾種解決方案,并選擇基于XMPP協(xié)議,實現(xiàn)了一個基于Android的消息推送系統(tǒng)。

        關鍵詞:Android,消息推送,XMPP協(xié)議

        1.引言

        隨著移動互聯(lián)網(wǎng)的發(fā)展,智能手機和各種智能終端的用戶越來越多,移動互聯(lián)網(wǎng)已經成為人們獲取信息的一個最佳平臺。如何及時或定時地向用戶發(fā)送各種信息越來越成為目前研究的熱點,消息推送就被用在了傳送信息的各個領域。IOS平臺已經提供了官方的消息推送的解決方案[1],但是Android平臺的解決方案卻比較復雜。本文分析了Android平臺的消息推送的幾種不同的解決方案,最后基于XMPP協(xié)議實現(xiàn)了一個消息推送系統(tǒng)。

        2.消息推送技術

        消息推送技術主要有兩種方式[2]:一種是客戶端使用PULL的方式,就是隔一段時間就去服務器上獲取信息;另一種就是服務器使用PUSH的方式,當服務器端把最新的信息Push到客戶端上。

        2.1 GCM云推送

        Google Cloud Messaging for Android(簡稱GCM),是谷歌新推出的云推送消息服務,即第二代的C2DM。該服務可以將服務器端的消息發(fā)送給客戶端,簡單,無需實現(xiàn)和部署服務端。但是受到Android版本的限制,而且需要連接Google的服務器,因此該服務在國內還不夠穩(wěn)定。另外,對于不同的硬件廠商平臺,他們可能把Google所提供的這種服務去掉。

        2.2 MQTT協(xié)議

        MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發(fā)的一個輕量級的消息發(fā)布/訂閱協(xié)議,是一種實現(xiàn)基于手機客戶端的消息推送服務器的理想解決方案。該協(xié)議支持所有平臺,幾乎可以把所有聯(lián)網(wǎng)物品和外部連接起來,被用來當做傳感器和致動器的通信協(xié)議。該協(xié)議的優(yōu)點是:協(xié)議簡潔、小巧、可擴展性強、省流量、省電,目前已經應用到企業(yè)領域。但是目前還不夠成熟、實現(xiàn)較復雜、服務端組件RSMB不開源,部署硬件成本較高。

        2.3 XMPP協(xié)議

        XMPP協(xié)議是一種基于標準通用標記語言的子集XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性。因此,基于XMPP的應用具有超強的可擴展性。該協(xié)議的前身是Jabber,目前已由IETF國際標準化組織完成了標準化工作。XMPP協(xié)議目前已經比較成熟,可擴展性強,協(xié)議是自由、源碼開放的,這些都可以為開發(fā)人員直接使用,有利于減小項目的開發(fā)難度。

        2.4 第三方平臺

        許多互聯(lián)網(wǎng)公司看到了移動終端的消息推送的應用前景,推出了很多種成熟的第三方推送解決方案。對于一般用戶來說,采用第三方解決方案,應用成本低,操作簡單,第三方所提供的技術比較可靠。但是第三方解決方案,都需要連接第三方的服務器,因此數(shù)據(jù)的安全性方面可能會受到一定影響。另外,目前對于一些入門級別的服務目前是不收費的,但是從長遠來看,收費是一種必然趨勢。

        3.系統(tǒng)設計與實現(xiàn)

        本文采用XMPP協(xié)議作為消息推送系統(tǒng)的解決方案,XMPP協(xié)議也是目前最流行的一種消息推送協(xié)議。

        XMPP中定義了三個角色,客戶端,服務器,網(wǎng)關。通信能夠在這三者的任意兩個之間雙向發(fā)生。服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。網(wǎng)關承擔著與異構即時通信系統(tǒng)的互聯(lián)互通?;镜木W(wǎng)絡形式是單客戶端通過TCP/IP連接到單服務器,然后在之上傳輸XML。

        基于XMPP協(xié)議的開源的客戶端框架是smack,它主要封裝了一些XMPP的實現(xiàn),asmack是改進版的 smack。而另外一個開源框架的誕生,則是對在引用smack的基礎上實現(xiàn)和服務器端的持久連接,以實現(xiàn)服務器對客戶端的推送,那就是Android push notification,簡稱Androidpn。

        3.1 服務器端

        Androidpn 客戶端需要用到一個基于java的開源XMPP協(xié)議包asmack,這個包同樣也是基于openfire下的另外一個開源項目smack,不過我們不需要自己編譯,可以直接把Androidpn客戶端里面的asmack.jar拿來使用??蛻舳死胊smack中提供的XMPPConnection類與服 務器建立持久連接,并通過該連接進行用戶注冊和登錄認證,同樣也是通過這條連接,接收服務器發(fā)送的通知。

        Androidpn服務器端也是java語言實現(xiàn)的,基于openfire開源工程,Web部分采用的是spring框架。Androidpn服務器包含兩個部分,一個是偵聽在5222端口上的XMPP服務,負責與客戶端的 XMPPConnection類進行通信,作用是用戶注冊和身份認證,并發(fā)送推送通知消息。另一個是Web服務器,采用一個輕量級的HTTP服務器,負責接收用戶的Web請求。

        最上層包含四個組成部分,分別是SessionManager,Auth Manager,PresenceManager以及Notification Manager。SessionManager負責管理客戶端與服務器之間的會話,Auth Manager負責客戶端用戶認證管理,Presence Manager負責管理客戶端用戶的登錄狀態(tài),NotificationManager負責實現(xiàn)服務器向客戶端推送消息功能。

        3.2 客戶端

        Androidpn在客戶端集成了asmack。這樣就可以很容易的簡立一個和服務器端的基于xmpp協(xié)議的socket連接。Androidpn的客戶端中,進行管理連接的類是XmppManager,它主要用來管理連接的信息,比如XMPP的端口、IP、登錄的用戶名密碼,以及對連接的維護。整個服務器端和客戶端的通信是基于一個session(會話)過程。

        4.系統(tǒng)實現(xiàn)

        4.1 搭建平臺[3]

        首先去官網(wǎng)下載AndroidPN源碼服務端和客戶端,用Eclipse導入AndroidPN server即服務端。由于AndroidPn 默認采用的數(shù)據(jù)庫是HSQLDB 數(shù)據(jù)庫,并不具有普適性,這里采用服務器端本地的MySQL 數(shù)據(jù)庫進行部署。修改服務器端配置文件jdbc.properties文件,修改jdbcurl項為:jdbc:mysql://localhost/apn?&useUnicode;=true&characterEncoding;=utf8,修改jdbcusername和jdbcpassword為MySql的連接賬號和密碼。若采用SQLServer 數(shù)據(jù)庫系統(tǒng),可修改為相應的數(shù)據(jù)庫連接內容,并導入相應jar 包,新建一個對應的空數(shù)據(jù)庫。然后,運行并導出war文件,上傳到tomcat服務器。

        解壓androidpn-client-0.5.0.zip,導入eclipse工程,運行前更改一處IP地址,修改res/raw/androidpn.properties文件中的xmppHost為xmppHost=10.0.2.2。

        4.2服務器端

        Androidpn平臺可以實現(xiàn)手動信息推送,但是不能實現(xiàn)自動消息推送,因此需要自己編寫接口調用推送服務來實現(xiàn)信息的自動推送。在Androidpn Sever創(chuàng)建Apicontroller類,用于接收應用程序發(fā)送過來的數(shù)據(jù),并將消息推送出去。應用程序可以通過接口調用來實現(xiàn)消息的自動推送。

        4.3 客戶端

        獲得NotificationManager對象,構建一個Notification對象,該對象描述了通知的標題和內容,然后再調用NotificationManager.notify方法發(fā)起通知,發(fā)起后的通知就會在消息欄提示。

        5.結束語

        移動終端的消息推送服務目前得到了廣泛的應用,本文基于目前比較主流的消息推送協(xié)議XMPP協(xié)議,設計并實現(xiàn)了一個消息推送系統(tǒng),利用Androidpn框架可以實現(xiàn)由服務器端向客戶端的文本信息的推送。

        參考文獻

        [1]王美妮,王穎,趙偉.基于XMPP協(xié)議消息推送機制的研究與實現(xiàn)[J].長春師范學院學報(自然科學版). 2014,33.

        [2]黃河清,陳文. Android平臺消息推送服務的實現(xiàn)[J].網(wǎng)絡與通信.2014,18.

        [3]常新峰,呂樂樂. Android平臺下消息推送機制的研究與實現(xiàn)[J].計算機軟件與應用. 2014,14.

        日本频道一区二区三区| 国产亚洲日韩欧美一区二区三区| 亚洲日韩成人av无码网站| 国产亚洲视频在线播放| 久久精品第九区免费观看| 国产成人一区二区三区影院动漫| a级黑人大硬长爽猛出猛进| 国产精品自产拍在线观看中文| 性感人妻一区二区三区| 青青河边草免费在线看的视频| 真人抽搐一进一出视频| 性色av无码不卡中文字幕| 国产尤物二区三区在线观看| 狠狠综合久久av一区二区三区| 日本高清一区二区三区在线观看 | 日本a级片一区二区三区| 国产精品一区二区av麻豆| 亚洲av片不卡无码久久| 国产人成无码视频在线1000| 精品人妻av中文字幕乱| 午夜天堂精品久久久久| 亚洲永久精品ww47| 天堂Av无码Av一区二区三区| 粉嫩的极品女神尤物在线| 又色又爽又高潮免费视频国产| 国外精品视频在线观看免费| 日韩美女高潮流白浆视频在线观看| 一本色道久久88综合亚洲精品| 久久久人妻一区二区三区蜜桃d| 久久99精品久久久大学生| 黑人玩弄漂亮少妇高潮大叫| 国产中文字幕乱码在线| 日本女优中文字幕亚洲| 国产强被迫伦姧在线观看无码| 又色又爽又黄又硬的视频免费观看| 91精品国产丝袜在线拍| 久久久人妻一区精品久久久| 丰满人妻一区二区三区视频| 摸进她的内裤里疯狂揉她动视频| 国内精品伊人久久久久av| 久久精品国产亚洲不卡|