使用所謂的主動(dòng)推送消息,一般就是這三種方式:
1、客戶端不斷查詢服務(wù)器,檢索新內(nèi)容,就是所謂的pull(Pull) 2、服務(wù)器有新內(nèi)容時(shí),發(fā)送一條類似短信的信令給客戶端,即一個(gè)觸發(fā)器動(dòng)作,客戶端開啟相應(yīng)的應(yīng)用程序或者后臺(tái)服務(wù)抓取信息.(SMS) 3、客戶端和服務(wù)器保持一條socket,并且周期性的告知服務(wù)器undead(Persistent TCP/IP)
Pull和SMS方式的缺點(diǎn)是顯而易見的,Pull會(huì)加重服務(wù)器負(fù)擔(dān),過(guò)快消耗移動(dòng)設(shè)備的電力; SMS費(fèi)用較高,時(shí)效性也沒有優(yōu)勢(shì),而且很難在全球范圍內(nèi)推廣-----最顯著的缺點(diǎn) 比較靠譜的方案是TCP/IP長(zhǎng)連接。
Android上Push Notification的實(shí)現(xiàn)原理:
C2DM其實(shí)使用的也是TCP/IP長(zhǎng)連接,所不同的是它運(yùn)行在系統(tǒng)級(jí)別,從而避免了被操作系統(tǒng)殺死使整個(gè)Push機(jī)制失效(第三方應(yīng)用程序當(dāng)然可以不使用C2DM自己實(shí)現(xiàn)Push機(jī)制,但一旦系統(tǒng)內(nèi)存較低,程序被操作系統(tǒng)殺死)。 另外,由于所有的第三方Push數(shù)據(jù)都必須走Google的C2DM Server,所以在實(shí)現(xiàn)上只需保持一個(gè)TCP/IP長(zhǎng)連接,所有的Push數(shù)據(jù)都通過(guò)這個(gè)連接傳送,從而節(jié)省了很多電力開銷。
|