激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android、iOS和Windows Phone中的推送技術詳解

Android、iOS和Windows Phone中的推送技術詳解

2021-03-13 15:54Android教程網 Android

這篇文章主要介紹了Android、iOS和Windows Phone中的推送技術詳解,推送技術的實現通常會使用服務端向客戶端推送消息的方式,也就是說客戶端通過用戶名、Key等ID注冊到服務端后,在服務端就可以將消息向所有活動的客戶端發送,需要的朋

推送并不是什么新技術,這種技術在互聯網時代就已經很流行了。只是隨著進入移動互聯網時代,推送技術顯得更加重要。因為在智能手機中,推送從某種程度上,可以取代使用多年的短信,而且與短信相比,還可以向用戶展示更多的信息(如圖像、表格、聲音等)。

推送技術的實現通常會使用服務端向客戶端推送消息的方式。也就是說客戶端通過用戶名、key等id注冊到服務端后,在服務端就可以將消息向所有活動的客戶端發送。

實際上,在很多移動操作系統中,官方都為其提供了推送方案,例如,google的云推送、ios、windows phone7/8也都提供了類似的推送方案。不過這些推送方案的服務器都在國外,有一些推送服務(如google的云推送)在國內由于某些原因不太穩定,所以國內近幾年涌現出了很多專門為國人打造的推送服務。

本文將從各種流行移動操作系統入手介紹推送技術的各種實現方式。當然,我們的主要目的是討論android的推送技術。

一、ios的推送技術

apple為ios提供了很完美的推送方案,其基本原理是apple提供了自己的推送服務器,叫apns(apple push notification service,蘋果推送通知服務器)。而客戶端設備(iphone、ipad等)直接與apns建立長連接。不過向客戶端設備發送的消息并不是由apns產生的,而是在需要發送消息的用戶自己提供的服務器(稱為provider)中產生的,然后provider將消息傳送給apns,最后由apns將消息傳送給客戶端設備。也就是說,消息最開始由provider產生,然后provider將消息傳送給apns,最后再由apns傳送給客戶端設備。消息傳遞的過程如圖1所示。

Android、iOS和Windows Phone中的推送技術詳解

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

Android、iOS和Windows Phone中的推送技術詳解

二、windows phone的推送技術

微軟為window phone提供的推送方案與ios類似,也需要自己準備推送服務器(可以稱為cloud service)。只是表示設備的id變成了uri。在window phone中有一個push client service(pcs)。所有需要推送服務的應用程序都需要與push client service通信。下面是window phone推送的基本步驟,讀者可以與圖3對照來看這一過程。

第1步:應用程序會向push client service請求一個push notification uri(①)。

第2步:如果當前window phone設備已經在微軟服務器注冊了,push client service會從mpns(microsoft push notification service ,微軟推送通知服務)獲取push notification uri,并返回給應用程序,表示推送服務可用(②和③)。

第3步:應用程序需要將push notification uri發送給自己的推送服務器(cloud service)(④)。

第4步:如果需要推送消息,cloud service會將消息發送到mpns,然后mpns會將消息發送給push client service,最后由push client service將消息傳送給應用程序(⑤、⑥和③)。

Android、iOS和Windows Phone中的推送技術詳解

三、android的推送方案

android的推送方案就比較多了,也比較亂。例如,有google官方提供的c2dm(android cloud to device messaging);第三方的推送服務(如極光推送);還有通過各種協議實現的推送服務端程序(如androidpn),用戶通過這些服務端程序可以搭建自己的推送服務器。這些推送技術會在本節后面的部分詳細介紹,本節先來介紹一下android中經常使用的各種推送技術。當然,這些推送技術也能用于其它的移動設備,但由于android的官方推送服務(c2dm)在國內使用上有一些問題,所以基于android的第三方推送服務較其它系統多,因此這里主要針對android來介紹。

通常推送技術會使用如下兩種方式實現。

1. 輪詢(pull)方式

2. 持久連接方式(服務端push方式)

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

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

持久連接的實現有很多方式,例如,可以使用xmpp作為通信協議。xmpp的主要優勢是協議成熟、強大,可擴展性強。xmpp更多地用于im系統中,后面要介紹的androidpn也是用了xmpp協議。

xmpp也有明顯的缺點,例如,協議很復雜,如果吃透xmpp協議可能需要很長時間,還有就是由于xmpp是基于xml的,從而造成了數據冗余、這樣會造成移動設備費流量、耗電等弊病。

除了xmpp,還可以使用mqtt協議,這種協議的主要優勢是簡潔、小巧、可擴展性強,從而帶來了省流量、省電等優點,而且有c++版的服務端組件rsmb。缺點是協議不夠成熟,而且實現較復雜,而且rsmb不開源,部署硬件的成本較高。

盡管c2dm服務在國內可能不太穩定或有一些地區不可用,但還是有必要介紹一下c2dm的原理。不過對于在國內使用的應用最好使用第三方的推送服務,或自己假設推送服務器。

c2dm和ios的apns以及window phone的mpns大同小異。還需要自己準備一臺推送服務器,并通過如下步驟實現消息的推送。

第1步:移動設備上的c2dm服務需要與google官方的c2dm服務器交互,驗證當前設備是否在c2dm服務器上注冊了,如果已經注冊,c2dm服務器會返回一個注冊id給客戶端的c2dm服務。(①和②)

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

第3步:如果要推送消息,推送服務器會將注冊id和要推送的消息先發送到c2dm服務器,然后c2dm服務器會直接將消息推送給客戶端(手機、平板電腦的設備)(④和⑤)。

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

Android、iOS和Windows Phone中的推送技術詳解

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩一 | 99影视电影电视剧在线播放 | 国产色视频免费 | 99亚洲国产精品 | 黄色片网站在线免费观看 | 成年人黄色免费网站 | 欧美成人三级视频 | 国产免费一级 | 在线成人免费观看 | 久久久综合 | 黑人一级片视频 | 久久网页 | 精品91av| www.99re1.com| 毛片一区二区三区四区 | 国产在线欧美 | 夜间福利视频 | 国产伊人色 | 成人精品免费在线观看 | 免费一级毛片观看 | 国产一区成人 | 欧美成人免费香蕉 | 久久精品伊人网 | 香蕉久草视频 | 久久手机在线视频 | 欧美天堂一区 | 成人黄色在线免费观看 | 久久久日韩精品一区二区 | 手机免费看一级片 | 91看片在线播放 | 91 成人| 国产精品午夜一区 | 天堂福利电影 | 少妇一级淫片免费放4p | 中文字幕电影免费播放 | 龙的两根好大拔不出去h | 国产草草视频 | 久久精品视频一区二区三区 | 国产精品久久久久久模特 | 久久久久久久一区二区 | 超碰人人射 |