日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Android消息推送完美解決方案全析

推送功能在手機(jī)應(yīng)用開(kāi)發(fā)中越來(lái)越重要,已經(jīng)成為手機(jī)開(kāi)發(fā)的必須。在Android應(yīng)用開(kāi)發(fā)中,由于眾所周知的原因,Android消息推送我們不得不大費(fèi)周折。本文就是用來(lái)和大家共同探討一種Android消息推送的***解決方案。

一、消息推送基礎(chǔ)

消息推送,就是在互聯(lián)網(wǎng)上通過(guò)定期傳送用戶(hù)需要的信息來(lái)減少信息過(guò)載的一項(xiàng)新技術(shù)。推送技術(shù)通過(guò)自動(dòng)傳送信息給用戶(hù),來(lái)減少用于網(wǎng)絡(luò)上搜索的時(shí)間。它根據(jù)用戶(hù)的興趣來(lái)搜索、過(guò)濾信息,并將其定期推給用戶(hù),幫助用戶(hù)高效率地發(fā)掘有價(jià)值的信息

當(dāng)我們開(kāi)發(fā)需要和服務(wù)器交互的移動(dòng)應(yīng)用時(shí),基本上都需要和服務(wù)器進(jìn)行交互,包括上傳數(shù)據(jù)到服務(wù)器,同時(shí)從服務(wù)器上獲取數(shù)據(jù)。

一般情況下,客戶(hù)端與服務(wù)器之間通訊客戶(hù)端是主動(dòng)的,但這就存在一個(gè)問(wèn)題就是一旦服務(wù)器數(shù)據(jù)有更新或者服務(wù)器要下發(fā)通知給客戶(hù)端只能等客戶(hù)端連接的時(shí)候才能實(shí)現(xiàn)。這種方式使消息失去了實(shí)時(shí)性。

如何使客戶(hù)端能夠?qū)崟r(shí)的收到服務(wù)器的消息和通知,總體來(lái)說(shuō)有兩種方式,***種是客戶(hù)端使用Pull(拉)的方式,就是隔一段時(shí)間就去服務(wù)器上獲取一下信息,看是否有更新的信息出現(xiàn)。第二種就是 服務(wù)器使用Push(推送)的方式,當(dāng)服務(wù)器端有新信息了,則把***的信息Push到客戶(hù)端上。這樣,客戶(hù)端就能自動(dòng)的接收到消息。?

雖然Pull和Push兩種方式都能實(shí)現(xiàn)獲取服務(wù)器端更新信息的功能,但是明顯來(lái)說(shuō)Push方式比Pull方式更優(yōu)越。因?yàn)镻ull方式更費(fèi)客戶(hù)端的網(wǎng)絡(luò)流量,更主要的是費(fèi)電量,還需要我們的程序不停地去監(jiān)測(cè)服務(wù)端的變化。??

二、幾種常見(jiàn)的解決方案實(shí)現(xiàn)原理

1)輪詢(xún)(Pull)方式:客戶(hù)端定時(shí)向服務(wù)器發(fā)送詢(xún)問(wèn)消息,一旦服務(wù)器有變化則立即同步消息。

2)SMS(Push)方式:通過(guò)攔截SMS消息并且解析消息內(nèi)容來(lái)了解服務(wù)器的命令,但這種方式一般用戶(hù)在經(jīng)濟(jì)上很難承受。

3)持久連接(Push)方式:客戶(hù)端和服務(wù)器之間建立長(zhǎng)久連接,這樣就可以實(shí)現(xiàn)消息的及時(shí)行和實(shí)時(shí)性。

三、消息推送解決方案概述

A、C2DM云端推送方案

在Android手機(jī)平臺(tái)上,Google提供了C2DM(Cloudto Device Messaging)服務(wù)。Android Cloud to Device Messaging (C2DM)是一個(gè)用來(lái)幫助開(kāi)發(fā)者從服務(wù)器向Android應(yīng)用程序發(fā)送數(shù)據(jù)的服務(wù)。該服務(wù)提供了一個(gè)簡(jiǎn)單的、輕量級(jí)的機(jī)制,允許服務(wù)器可以通知移動(dòng)應(yīng)用程序直接與服務(wù)器進(jìn)行通信,以便于從服務(wù)器獲取應(yīng)用程序更新和用戶(hù)數(shù)據(jù)。

該方案存在的主要問(wèn)題是C2DM需要依賴(lài)于Google官方提供的C2DM服務(wù)器,由于國(guó)內(nèi)的網(wǎng)絡(luò)環(huán)境,這個(gè)服務(wù)經(jīng)常不可用。

B、MQTT協(xié)議實(shí)現(xiàn)Android推送

采用MQTT協(xié)議實(shí)現(xiàn)Android推送功能也是一種解決方案。MQTT是一個(gè)輕量級(jí)的消息發(fā)布/訂閱協(xié)議,它是實(shí)現(xiàn)基于手機(jī)客戶(hù)端的消息推送服務(wù)器的理想解決方案。

wmqtt.jar 是IBM提供的MQTT協(xié)議的實(shí)現(xiàn)。我們可以從這里(https://github.com/tokudu/AndroidPushNotificationsDemo)下載該項(xiàng)目的實(shí)例代碼,并且可以找到一個(gè)采用PHP書(shū)寫(xiě)的服務(wù)器端實(shí)現(xiàn)(https://github.com/tokudu/PhpMQTTClient)。

C、RSMB實(shí)現(xiàn)推送功能

Really Small Message Broker (RSMB) ,是一個(gè)簡(jiǎn)單的MQTT代理,同樣由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。缺省打開(kāi)1883端口,應(yīng)用程序當(dāng)中,它負(fù)責(zé)接收來(lái)自服務(wù)器的消息并將其轉(zhuǎn)發(fā)給指定的移動(dòng)設(shè)備。SAM是一個(gè)針對(duì)MQTT寫(xiě)的PHP庫(kù)。我們可以從這個(gè)http://pecl.php.net/package/sam/download/0.2.0地址下載它.

D、XMPP協(xié)議實(shí)現(xiàn)Android推送

Google官方的C2DM服務(wù)器底層也是采用XMPP協(xié)議進(jìn)行的封裝。XMPP(可擴(kuò)展通訊和表示協(xié)議)是基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)的協(xié)議,它用于即時(shí)消息(IM)以及在線探測(cè)。這個(gè)協(xié)議可能最終允許因特網(wǎng)用戶(hù)向因特網(wǎng)上的其他任何人發(fā)送即時(shí)消息。

androidpn是一個(gè)基于XMPP協(xié)議的java開(kāi)源Android push notification實(shí)現(xiàn)。它包含了完整的客戶(hù)端和服務(wù)器端。但也存在一些不足之處:

1) 比如時(shí)間過(guò)長(zhǎng)時(shí),就再也收不到推送的信息了。

2)性能上也不夠穩(wěn)定。

3)如果將消息從服務(wù)器上推送出去,就不再管理了,不管消息是否成功到達(dá)客戶(hù)端手機(jī)上。

如果我們要使用androidpn,則還需要做大量的工作,需要理解XMPP協(xié)議、理解Androidpn的實(shí)現(xiàn)機(jī)制,需要調(diào)試內(nèi)部存在的BUG。

E、使用第三方平臺(tái)

目前國(guó)內(nèi)、國(guó)外有一些推送平臺(tái)可供使用,但是涉及到收費(fèi)問(wèn)題、保密問(wèn)題、服務(wù)質(zhì)量問(wèn)題、擴(kuò)展問(wèn)題等等,又不得不是我們望而卻步。

四、消息推送***方案

綜合以上論述,在建立Android消息推送方面可謂方案多多,但每一款方案都有其優(yōu)缺點(diǎn)。但無(wú)論如何,還是自己搭建一個(gè)推送平臺(tái)是上策。因?yàn)槟阌?、他有不如自己有?/p>

舉個(gè)例子,在搭建自有推送平臺(tái)上建議使用《某某Android消息推送組件》。該組不僅可以拿來(lái)即用,并且還可以提供源碼以便擴(kuò)展,實(shí)現(xiàn)自己的特殊需求。

A、推送原理

Android消息推送組件基于XMPP協(xié)議實(shí)現(xiàn)Android推送。XMPP(可擴(kuò)展通訊和表示協(xié)議)是基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)的協(xié)議,它用于即時(shí)消息(IM)以及在線探測(cè)。這個(gè)協(xié)議可能最終允許因特網(wǎng)用戶(hù)向因特網(wǎng)上的其他任何人發(fā)送即時(shí)消息。

Android消息推送組件實(shí)現(xiàn)原理見(jiàn)下圖:

           

圖1-消息推送原理圖

Android消息推送組件由服務(wù)器部分和客戶(hù)端部分組成。每一部分都由XMPP協(xié)議組件和外部接口組件構(gòu)成。XMPP協(xié)議組件負(fù)責(zé)服務(wù)器和Android客戶(hù)端間的連接管理、消息通訊,外部接口組件負(fù)責(zé)接收應(yīng)用系統(tǒng)、客戶(hù)端應(yīng)用的命令,向應(yīng)用系統(tǒng)發(fā)送接收到的通知消息。

Android消息組件提供基于Tomcat的服務(wù)器應(yīng)用和Android開(kāi)發(fā)jar包。其中基于Tomcat的服務(wù)器應(yīng)用直接在Tomcat上部署即可,Android開(kāi)發(fā)jar包引入Android項(xiàng)目即可。

B 集成方式

1)服務(wù)器部署

Android消息組件Tomcat的服務(wù)器應(yīng)用直接部署在Tomcat中,端口號(hào)任意設(shè)定。

2)客戶(hù)端jar包引用

在Android項(xiàng)目中建立libs目錄,然后將提供的Android開(kāi)發(fā)jar包復(fù)制到該目錄即可。見(jiàn)下圖:

圖2-jar包引入圖

3)Android項(xiàng)目AndroidManifest.xml文件修改

在該文件中增加以下權(quán)限:

 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  

在該文件中注冊(cè)服務(wù):

 
 
 
  1.  
  2.  
  3.  android:name="com.bjjrs.server.NotificationService" 
  4.  
  5.  android:label="NotificationService"> 
  6.  
  7.        
  8.  
  9.           
  10.  
  11.       
  12.  
  13.  

至此,Android消息組件集成工作完成。

C、接口方式

1)服務(wù)器端接口采用基于http協(xié)議的訪問(wèn)方式,采用http協(xié)議從服務(wù)器中獲取各種信息,實(shí)現(xiàn)通知消息的推送。

如使用以下方式和參數(shù)就可以實(shí)現(xiàn)各種用戶(hù)消息的查詢(xún):

http://localhost:8080/user.do?action=getAllUser&isOnline=&userID=&userType=&deptID=&deptName=&realName=

使用如下方式就可以實(shí)現(xiàn)各種消息的推送:

http://localhost:8080/notification.do?action=pushNoti&userNames=&title=&content=

2)Android客戶(hù)端接口采用廣播機(jī)制。

消息接收:當(dāng)XMPP協(xié)議組件接收到推送消息時(shí),將按照一定格式廣播該消息,通知客戶(hù)端其他應(yīng)用接收并處理該消息。

消息發(fā)送:客戶(hù)端應(yīng)用需要向服務(wù)器或者其他客戶(hù)端發(fā)送即時(shí)消息時(shí),只需按一定格式廣播該消息,XMPP組件就會(huì)自動(dòng)接收該消息并發(fā)送到指定的其他客戶(hù)端。

D、優(yōu)勢(shì)特點(diǎn)

1)系統(tǒng)集成簡(jiǎn)單,無(wú)需復(fù)雜的設(shè)置。

2)Android客戶(hù)端應(yīng)用和Android消息推送組件完全分離,通過(guò)接口相互調(diào)用,實(shí)現(xiàn)模塊應(yīng)用***化。

3)客戶(hù)端通訊機(jī)制采用廣播方式,給客戶(hù)端應(yīng)用帶來(lái)極大的靈活性和可擴(kuò)展性,可以自由處理接收到的推送消息。

4)Android消息推送組件在服務(wù)器端具備消息存儲(chǔ)、消息重發(fā)、消息路由等功能,在客戶(hù)端部分具備斷線重連、、收到確認(rèn)、閱讀確認(rèn)、消息發(fā)送、命令執(zhí)行等功能,確保消息能夠推送到客戶(hù)端,同時(shí)也保證客戶(hù)端能夠收到、閱讀消息。

E、 應(yīng)用范圍

Android消息推送組件可在以下場(chǎng)景中使用:

1)用于消息推送。如:通知下達(dá)、應(yīng)急指揮等。

2)用戶(hù)及時(shí)消息交互。如在線聊天、工作情況交互等。

3)用于遠(yuǎn)程控制。如控制遠(yuǎn)程客戶(hù)端的狀態(tài)、數(shù)據(jù)上報(bào)等。

***,希望轉(zhuǎn)載的朋友能夠尊重作者的勞動(dòng)成果,加上轉(zhuǎn)載地址。

http://bbs.hiapk.com/thread-4652657-1-1.html


當(dāng)前標(biāo)題:Android消息推送完美解決方案全析
文章轉(zhuǎn)載:http://www.5511xx.com/article/ccosgde.html