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

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

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

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

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

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

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

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

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

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

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

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

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

第2步:如果當(dāng)前Window Phone設(shè)備已經(jīng)在微軟服務(wù)器注冊(cè)了,Push Client Service會(huì)從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會(huì)將消息發(fā)送到MPNS,然后MPNS會(huì)將消息發(fā)送給Push Client Service,最后由Push Client Service將消息傳送給應(yīng)用程序(⑤、⑥和③)。

三、Android的推送方案

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

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

1. 輪詢(Pull)方式

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

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

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

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

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

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

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

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

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

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

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

讀者可以對(duì)照?qǐng)D4來(lái)理解這3個(gè)步驟。

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

相關(guān)文章

最新評(píng)論