推送技術 Push Notification

1.BB,Nokia,Palm都前後支持了Push,目前流行的Push方式有三種。 html

(1)短信觸發:2G時代長時間的數據鏈接會影響電話接入的可靠性,因此Pushmail用短信的方式觸發。推過來一個看不到的短信,讓系統去鏈接郵件服務器。 web

(2)長鏈接心跳查詢:3G時代,語音和數據分離,手機長時間的保持網絡鏈接成爲可能。因而能夠創建一個鏈接,設定必定時間間隔,讓手機不斷的檢查服務器的郵件。 json

(3)長鏈接IMAP IDLE:網絡進步的同時,郵件推送的協議也在不斷改進。IMAP開始支持IDLE特性。讓手機不須要總去訪問服務器。手機的請求過來,郵件服務器能夠把回覆掛起,有新郵件近來時再發出。這個過程當中,客戶端和服務器也是一直鏈接的。 安全

 

2.iPhone推送通知的工做機制能夠簡單的歸納爲下圖:Provider是指某個iPhone軟件的Push服務器,APNS 是Apple Push Notification Service(Apple Push服務器)。 服務器

(1)、Provider: 用來向APNS發送消息 網絡

(2)、APNS: Apple_Push_Notification_Service 蘋果消息推送服務器 app

(3)、iphone:用來接受APNS下發下來的消息推送 iphone

(4)、Client App: 安裝在iphone上面的程序 (用來接收iphone傳遞APNS下發的消息到制定的一個客戶端 app) ide

 

iPhone在開啓Push的時候,會鏈接 APNS創建一條TLS加密連接。每一臺正常的iPhone都有一個獨有的設備證書,而APNS也有一個服務器證書。二者創建的時候,會驗證彼此的證書有效性。
TLS連接一旦創建,在沒有數據的狀況下,只須要每隔15分鐘進行一次保活的握手,所以幾乎不佔流量。而一旦由於意外緣由致使連接中斷,iPhone會不斷從新嘗試創建TLS連接,直到成功。 測試

 

http://www.cocoachina.com/iphonedev/sdk/2011/1124/3599.html

http://hi.baidu.com/nasa007/blog/item/369b15ca4b34318cc81768ef.html

http://slj.me/2010/02/iphone-push-notification/

http://marshal.easymorse.com/archives/3312

http://blog.csdn.net/linkai5696/archive/2011/04/12/6316929.aspx

http://www.cocoachina.com/newbie/basic/2010/0401/900.html

http://blog.csdn.net/sjzsp/article/details/6323070

 

3.蘋果爲軟件開發者們提供了三種信息提醒方式:顯示警告框,播放自定義聲音,更新應用程序標誌。

應用程序長時間後臺運行,會過分消耗電能是使用推送通知的最大的原因。

蘋果並不保證推送通知的到達及順序。

APNS和iPhone手機間的消息使用json格式,而且每條消息最大爲256字節。

iPhone收到推送請求後,執行一系列檢查,若是客戶端程序在運行,它會經過應用程序委託將消息發送到應用程序,若是沒有運行,它會執行警告,顯示文本,播放聲音或更新標誌。

推送提供商必須提供安全套接字層認證,和令牌,標識要通知的手機和應用程序。

APNS反饋服務列出未能接收到通知的設備。

在Guides\Local and Push Notification Programming Guide 中查有關推送通知的文檔。

 

4.當前Push Mail技術概覽 

(1)傳統的sms push

 黑莓(Blackberry)手機可以在美國火起來,支持Push是一個主要緣由。運營商經過 相似短信的方式,將新郵件通知給手機,這就是傳統的Push方式,咱們稱之爲SMS Push。在GSM中,32個時隙信道中有30個通話通路,而另外2個被預留用來傳遞管理和控制信令。而短信正是走的這個通道,所以收發短信和打電話並不 衝突,也很是靈活。可見,SMS Push須要運營商的支持,在中國,中國移動也發現了這個商機,他們天然不會免費提供這個服務,也不會提供通用的API接口給其餘郵箱運營的公司(如網易、騰訊)使用,而是他們本身開發了139mail。固然,你若是須要Push,就須要按月繳納一些費用。

      (2)ip push

      只有運營商能夠提供Push,而他們又盯上了郵箱這個領域,其餘郵箱運營的公司要想和移動競爭,彷佛已經輸在了起跑線上,然而事情並不是如此。與傳統穩重的 大國企相比,新興IT公司的優點就是具備不斷的創新精神和強大的開發團隊。其實Push不必定非要經過SMS實現,用Internet也能夠。經過網絡,手機客戶端能夠發送一個HTTP請求到服務器,告知服務器客戶端須要這個用戶的新郵件通知,當服務器收到一封新郵件時,就會回覆這個HTTP請求;客戶端通知用戶收到了新郵件,並同時再次與服務器創建鏈接,等待下一封信。有些人以爲只有「SMS Push」纔是真Push,IP Push是僞Push。他們爲何會這麼想呢?由於他們以爲IP Push須要保持鏈接,浪費了流量、電量、網絡資源。 那事實是這樣嗎?其實並不是如此。咱們首先思考這樣一個問題,你打電話給你的朋友,爲何基站在很短几秒鐘以內就能夠通知到對方的手機有一個來電呢?那是因 爲其實基站時刻都在跟你的手機保持着鏈接。因此SMS path也須要「保持鏈接」,再進一步思考,其實只要可以保持和基站的鏈接,其實就已經能夠保持網絡鏈接了,而其實等待一個HTTP的響應 (reponse)或者說維持一個TCP鏈接,額外開銷並不大。用「網易掌上郵」和尚郵push mail等IP Push的實測結果是,打開Push和關閉Push,電量並無明顯消耗,一天消耗的流量大概是50-60KB,也就至關於打開一個不太複雜的web頁面所產生的流量。

       (3)imap idle push

        IMAPIDLE 模式是 IMAP 協議的一項高級功能,在這種模式下,客端登陸鏈接服務器後並沒有主動查詢新郵件的動做,而是停留在 IDLE(空閒) 狀態,當服務器接收到新郵件後通知客端,客端再開始查詢新郵件的動做,此動做完成後,客端從新回到空閒狀態。因此也能夠算是一種push的方式。目前 gmail實現了這個功能。

       

IMAP IDLE 模式是 IMAP 協議的一項高級功能,在這種模式下,客端登陸鏈接服務器後並沒有主動查詢新郵件的動做,而是停留在 IDLE(空閒) 狀態,當服務器接收到新郵件後通知客端,客端再開始查詢新郵件的動做,此動做完成後,客端從新回到空閒狀態。使用 IMAP IDLE 模式的好處是,服務器收到新郵件時客端立刻就會收到通知

不支持 IMAP IDLE 的客端或者服務器,檢查新郵件是靠客端手動刷新或者按期查詢(好比每5分鐘),這種方式查詢新郵件會有時間延遲,若是新郵件沒有遇上上次查詢,必須等到客端下次查詢時才能收到通知

IMAP IDLE 和 Push email 仍是有區別的,Push email 是服務器主動把郵件推送到客端;而 IMAP IDLE 是客端主動登陸服務器並保持鏈接才能夠,用電話做例子來講,IMAP IDLE 就像是客端打電話到服務器後進入待機狀態等待服務器回答,而 Push email 則是服務器直接打電話給客戶端。

Gmail 目前並不支持 Push email,須要經過第三方支持(如 http://mobile.emoze.com/) 才能實現 Push email 的功能,這是由於 Gmail 在客端沒有登陸的狀況下不知道如何把郵件推送到你的手機;若是使用 IMAP IDLE 功能,服務器只會通知客端有新郵件,而下載新郵件的工做仍是客端完成的,而且這個過程當中客端必須一直保持與服務器的鏈接才能收到通知進而完成下載郵件的工 做,嚴格說這並非 Push。

Push Mail 必須和運營商合做。IMAP IDLE模式須要郵件客戶端一直鏈接服務器。
這對於手機應用來講,還不是問題,由於手機是按照流量收費,鏈接不產生流量。至於消耗的電池,有測試過,讓手機5分鐘聯網一次和一直鏈接,消耗的電量是同樣。甚至更少。


 4.cmwap爲何不能實現IP Push?
    cmwap是中國移動提供的一種接入點。能夠訪問wap站點、收發短信和經過10.0.0.172代理接入Internet。就是說,使用cmwap接 入,你的網絡訪問是須要經過移動提供的代理完成。而這個代理設置了嚴格HTTP請求超時(1分鐘左右),能夠簡單的理解爲一個TCP鏈接在沒有數據傳輸的 時候,最多隻能維持一分鐘。要想在cmwap下實現IP Push,就必須每分鐘發起一個請求來保持網絡鏈接。這個成本顯然是很大的,會消耗比較大的流量和電量。所以,cmwap是很難作到IP Push的。


5.2195端口


6.Apple推送通知服務教程

   http://article.ityran.com/archives/194




郵件推送實現原理和方法淺析

相關文章
相關標籤/搜索