Android、iOS和Windows Phone中的推送技術
推送并不是什么新技術,這種技術在互聯網時代就已經很流行了。只是隨著進入移動互聯網時代,推送技術顯得更加重要。因為在智能手機中,推送從某種程度上,可以取代使用多年的短信,而且與短信相比,還可以向用戶展示更多的信息(如圖像、表格、聲音等)。
推送技術的實現通常會使用服務端向客戶端推送消息的方式。也就是說客戶端通過用戶名、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所示。
在發送消息到客戶端設備接收到消息的過程中,始終伴隨這一個令牌的傳送(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的描述就會對這一過程更加了解了。每一個流程描述前面的數字表示發送的時間先后順序。
二、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將消息傳送給應用程序(⑤、⑥和③)。
posted on 2014-08-27 10:43 順其自然EVO 閱讀(379) 評論(0) 編輯 收藏 所屬分類: android