欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android、iOS和Windows Phone中的推送技術(shù)詳解

 更新時間:2015年01月23日 10:18:17   投稿:junjie  
這篇文章主要介紹了Android、iOS和Windows Phone中的推送技術(shù)詳解,推送技術(shù)的實(shí)現(xiàn)通常會使用服務(wù)端向客戶端推送消息的方式,也就是說客戶端通過用戶名、Key等ID注冊到服務(wù)端后,在服務(wù)端就可以將消息向所有活動的客戶端發(fā)送,需要的朋友可以參考下

推送并不是什么新技術(shù),這種技術(shù)在互聯(lián)網(wǎng)時代就已經(jīng)很流行了。只是隨著進(jìn)入移動互聯(lián)網(wǎng)時代,推送技術(shù)顯得更加重要。因?yàn)樵谥悄苁謾C(jī)中,推送從某種程度上,可以取代使用多年的短信,而且與短信相比,還可以向用戶展示更多的信息(如圖像、表格、聲音等)。

推送技術(shù)的實(shí)現(xiàn)通常會使用服務(wù)端向客戶端推送消息的方式。也就是說客戶端通過用戶名、Key等ID注冊到服務(wù)端后,在服務(wù)端就可以將消息向所有活動的客戶端發(fā)送。

實(shí)際上,在很多移動操作系統(tǒng)中,官方都為其提供了推送方案,例如,Google的云推送、IOS、Windows Phone7/8也都提供了類似的推送方案。不過這些推送方案的服務(wù)器都在國外,有一些推送服務(wù)(如Google的云推送)在國內(nèi)由于某些原因不太穩(wěn)定,所以國內(nèi)近幾年涌現(xiàn)出了很多專門為國人打造的推送服務(wù)。

本文將從各種流行移動操作系統(tǒng)入手介紹推送技術(shù)的各種實(shí)現(xiàn)方式。當(dāng)然,我們的主要目的是討論Android的推送技術(shù)。

一、iOS的推送技術(shù)

Apple為IOS提供了很完美的推送方案,其基本原理是Apple提供了自己的推送服務(wù)器,叫APNS(Apple Push Notification Service,蘋果推送通知服務(wù)器)。而客戶端設(shè)備(IPhone、IPad等)直接與APNS建立長連接。不過向客戶端設(shè)備發(fā)送的消息并不是由APNS產(chǎn)生的,而是在需要發(fā)送消息的用戶自己提供的服務(wù)器(稱為Provider)中產(chǎn)生的,然后Provider將消息傳送給APNS,最后由APNS將消息傳送給客戶端設(shè)備。也就是說,消息最開始由Provider產(chǎn)生,然后Provider將消息傳送給APNS,最后再由APNS傳送給客戶端設(shè)備。消息傳遞的過程如圖1所示。

在發(fā)送消息到客戶端設(shè)備接收到消息的過程中,始終伴隨這一個令牌的傳送(device token)。要想使用APNS提供消息服務(wù),應(yīng)用程序需要先向IOS注冊需要提供的一個必要的信息就是與當(dāng)前設(shè)備有關(guān)的device token,IOS在接收到devicetoken后,會向APNS查詢這個device token是否在APNS上注冊了(所有的IOS設(shè)備在第一次使用時都需要向蘋果服務(wù)器注冊一個賬號,否則無法從AppleStore下載應(yīng)用,當(dāng)然更無法使用推送服務(wù)了),如果已經(jīng)注冊,APNS會直接向應(yīng)用程序返回這個devicetoken。應(yīng)用程序獲得這個devicetoken后,表示APNS已經(jīng)允許向自己推送消息了,接著還需要將該device token發(fā)送給推送服務(wù)器(Provider)。到這里應(yīng)用程序已經(jīng)成功將自己注冊到APNS中了。現(xiàn)在就可以通過Provider產(chǎn)生要推送的消息,然后Provider會將消息發(fā)送給APNS服務(wù)器,最后APNS服務(wù)器會直接向應(yīng)用程序發(fā)送消息。這個過程比較復(fù)雜,不過看一下圖2的描述就會對這一過程更加了解了。每一個流程描述前面的數(shù)字表示發(fā)送的時間先后順序。

二、Windows Phone的推送技術(shù)

微軟為Window Phone提供的推送方案與IOS類似,也需要自己準(zhǔn)備推送服務(wù)器(可以稱為Cloud Service)。只是表示設(shè)備的ID變成了Uri。在Window Phone中有一個Push Client Service(PCS)。所有需要推送服務(wù)的應(yīng)用程序都需要與Push Client Service通信。下面是Window Phone推送的基本步驟,讀者可以與圖3對照來看這一過程。

第1步:應(yīng)用程序會向Push Client Service請求一個Push Notification URI(①)。

第2步:如果當(dāng)前Window Phone設(shè)備已經(jīng)在微軟服務(wù)器注冊了,Push Client Service會從MPNS(Microsoft Push Notification Service ,微軟推送通知服務(wù))獲取Push Notification URI,并返回給應(yīng)用程序,表示推送服務(wù)可用(②和③)。

第3步:應(yīng)用程序需要將Push Notification URI發(fā)送給自己的推送服務(wù)器(Cloud Service)(④)。

第4步:如果需要推送消息,Cloud Service會將消息發(fā)送到MPNS,然后MPNS會將消息發(fā)送給Push Client Service,最后由Push Client Service將消息傳送給應(yīng)用程序(⑤、⑥和③)。

三、Android的推送方案

Android的推送方案就比較多了,也比較亂。例如,有Google官方提供的C2DM(Android Cloud to Device Messaging);第三方的推送服務(wù)(如極光推送);還有通過各種協(xié)議實(shí)現(xiàn)的推送服務(wù)端程序(如AndroidPN),用戶通過這些服務(wù)端程序可以搭建自己的推送服務(wù)器。這些推送技術(shù)會在本節(jié)后面的部分詳細(xì)介紹,本節(jié)先來介紹一下Android中經(jīng)常使用的各種推送技術(shù)。當(dāng)然,這些推送技術(shù)也能用于其它的移動設(shè)備,但由于Android的官方推送服務(wù)(C2DM)在國內(nèi)使用上有一些問題,所以基于Android的第三方推送服務(wù)較其它系統(tǒng)多,因此這里主要針對Android來介紹。

通常推送技術(shù)會使用如下兩種方式實(shí)現(xiàn)。

1. 輪詢(Pull)方式

2. 持久連接方式(服務(wù)端Push方式)

輪詢方式就是客戶端以一定的時間間隔不斷查詢服務(wù)端是否有新的消息。這種方式必須自己實(shí)現(xiàn)與服務(wù)器之間的通信機(jī)制,例如消息隊(duì)列等。而且還要考慮輪詢的頻率,如果太慢可能導(dǎo)致某些消息的延遲,如果太快,則會大量消耗網(wǎng)絡(luò)帶寬和電池。所以大多數(shù)推送服務(wù)都不會使用輪詢方式。

持久連接方式也就是Push方 式,對于客戶端來說,是一種被動的方式,而主動權(quán)在服務(wù)端,當(dāng)有消息時,服務(wù)端會向所有注冊到推送服務(wù)器的客戶端推送消息。這種推送方式的好處是可以保證 實(shí)時性,而且客戶端實(shí)現(xiàn)簡單。當(dāng)然,也會有不足,例如,如果大量的客戶端與服務(wù)端保持長連接時,會消耗服務(wù)器的資源。不過在未推送消息時,這些長連接就成 了空閑連接,通常這種連接主要消耗的是內(nèi)存資源。例如,200萬用戶可能會消耗數(shù)十GB的內(nèi)存。因此搭建這種推送機(jī)制時要使用性能好的服務(wù)器。

持久連接的實(shí)現(xiàn)有很多方式,例如,可以使用XMPP作為通信協(xié)議。XMPP的主要優(yōu)勢是協(xié)議成熟、強(qiáng)大,可擴(kuò)展性強(qiáng)。XMPP更多地用于IM系統(tǒng)中,后面要介紹的AndroidPN也是用了XMPP協(xié)議。

XMPP也有明顯的缺點(diǎn),例如,協(xié)議很復(fù)雜,如果吃透XMPP協(xié)議可能需要很長時間,還有就是由于XMPP是基于XML的,從而造成了數(shù)據(jù)冗余、這樣會造成移動設(shè)備費(fèi)流量、耗電等弊病。

除了XMPP,還可以使用MQTT協(xié)議,這種協(xié)議的主要優(yōu)勢是簡潔、小巧、可擴(kuò)展性強(qiáng),從而帶來了省流量、省電等優(yōu)點(diǎn),而且有C++版的服務(wù)端組件rsmb。缺點(diǎn)是協(xié)議不夠成熟,而且實(shí)現(xiàn)較復(fù)雜,而且rsmb不開源,部署硬件的成本較高。

盡管C2DM服務(wù)在國內(nèi)可能不太穩(wěn)定或有一些地區(qū)不可用,但還是有必要介紹一下C2DM的原理。不過對于在國內(nèi)使用的應(yīng)用最好使用第三方的推送服務(wù),或自己假設(shè)推送服務(wù)器。

C2DM和IOS的APNS以及Window Phone的MPNS大同小異。還需要自己準(zhǔn)備一臺推送服務(wù)器,并通過如下步驟實(shí)現(xiàn)消息的推送。

第1步:移動設(shè)備上的C2DM服務(wù)需要與Google官方的C2DM服務(wù)器交互,驗(yàn)證當(dāng)前設(shè)備是否在C2DM服務(wù)器上注冊了,如果已經(jīng)注冊,C2DM服務(wù)器會返回一個注冊ID給客戶端的C2DM服務(wù)。(①和②)

第2步:客戶端的C2DM服務(wù)會與自己的推送服務(wù)器交互,將賬號和C2DM服務(wù)器返回的注冊ID傳給推送服務(wù)器。(③)

第3步:如果要推送消息,推送服務(wù)器會將注冊ID和要推送的消息先發(fā)送到C2DM服務(wù)器,然后C2DM服務(wù)器會直接將消息推送給客戶端(手機(jī)、平板電腦的設(shè)備)(④和⑤)。

讀者可以對照圖4來理解這3個步驟。

除了使用官方的推送方案外,現(xiàn)在國內(nèi)涌現(xiàn)出多個第三方的推送方案,例如,極光推送(JPush)、百度推送等。讀者也可以用一下,這些同時通常是免費(fèi)的(可能推送多媒體數(shù)據(jù)需要收費(fèi))。

相關(guān)文章

最新評論