天天看點

Android開發之第三方推送JPush極光推送知識點詳解 學會內建第三方SDK推送

作者:程式員小冰

下面是一些知識點介紹,後期将會帶領大家進行代碼實戰:

一、Android實作推送方式解決方案:

1、推送方式基礎知識:

   在移動網際網路時代以前的手機,如果有事情發生需要通知使用者,則會有一個視窗彈出,将告訴使用者正在發生什麼事情。可能是未接電話的提示,月曆的提醒,或是一封新的彩信。推送功能最早是被用于Email中,用來提示我們新的資訊。由于時代的發展和移動網際網路的熱潮,推送功能更加地普及,已經不再僅僅用在推送郵件了,更多地用在APP中了。

  當我們開發需要和伺服器互動的應用程式時,基本上都需要擷取伺服器端的資料,比如《地震應急通》就需要及時擷取伺服器上最新的地震資訊。要擷取伺服器上不定時更新的資訊,一般來說有兩種方法:第一種是用戶端使用Pull(拉)的方式,就是隔一段時間就去伺服器上擷取一下資訊,看是否有更新的資訊出現。第二種就是 伺服器使用Push(推送)的方式,當伺服器端有新資訊了,則把最新的資訊Push到用戶端上。這樣,用戶端就能自動的接收到消息。

  雖然Pull和Push兩種方式都能實作擷取伺服器端更新資訊的功能,但是明顯來說Push方式比Pull方式更優越。因為Pull方式更費用戶端的網絡流量,更主要的是費電量,還需要我們的程式不停地去監測服務端的變化。

  在開發Android應用程式時,我們往往需要從伺服器不定的向手機用戶端即時推送各種通知消息。我們隻需要在Android通知欄處向下一拉,就展開了Notification 面闆,可以集中一覽各種各樣通知消息。

2、幾種常見的解決方案實作原理:

  1)輪詢(Pull)方式:應用程式階段性的與伺服器進行連接配接,并查詢是否有新的消息到達。必須自己實作與伺服器之間的通信,例如消息排隊等。而且還要考慮輪詢的頻率,如果太慢可能導緻某些消息的延遲,如果太快,則會大量消耗網絡帶寬和電池。

  2)SMS(Push)方式:在Android平台上,可以通過攔截SMS消息并且解析消息内容來了解伺服器的意圖,并擷取其中的内容進行處理。這是一個不錯的想法,這個方案的好處是,可以實作完全的實時操作。但是問題是這個方案的成本相對比較高,需要向移動公司繳納相應的費用。目前很難找到免費的短消息發送網關來實作這種方案。

  3)持久連接配接(Push)方式:這個方案可以解決由輪詢帶來的性能問題,但是還是會消耗手機的電池。

  Android作業系統允許在低記憶體情況下殺死系統服務,是以我們的推送通知服務很有可能就被作業系統Kill掉了。 輪詢(Pull)方式和SMS(Push)方式這兩個方案也存在明顯的不足。至于持久連接配接(Push)方案也有不足,不過我們可以通過良好的設計來彌補,以便于讓該方案可以有效的工作。

3、 推薦解決方案:XMPP協定實作Android推送功能。

XMPP:  Extensible Messageing and Presence Protocol
    XMPP是目前主流的四種IM(IM:instant messaging,即時消息)協定之一,其他三種分别為:即時資訊和空間協定(IMPP)、空間和即時資訊協定(PRIM)、針對即時通訊和空間平衡擴充的程序開始協定SIP(SIMPLE)。      

  因為目前它是開源的,對于其簡單的推送功能它還是能夠實作的。

  事實上Google官方的C2DM伺服器底層也是采用XMPP協定進行的封裝。XMPP(可擴充通訊和表示協定)是基于可擴充标記語言(XML)的協定,它用于即時消息(IM)以及線上探測。這個協定可能最終允許網際網路使用者向網際網路上的其他任何人發送即時消息。

  androidpn是一個基于XMPP協定的java開源Android push notification實作。它包含了完整的用戶端和伺服器端。經過源代碼研究發現,該伺服器端基本是在另外一個開源工程openfire基礎上修改實作的。

4、主流解決方案:使用第三方平台:極光推送。

極光推送,英文簡稱 JPush,是一個面向普通開發者開放的,免費的第三方消息推送服務。 開發者隻需在用戶端內建極光推送 SDK,即可輕松地添加 Push功能到他的 App中。

繼續閱讀