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中。
二、極光推送服務具有如下的優勢:
1)完全開放註冊,免費向所有的開發者開放使用
2)SDK流量電量消耗很少
3)整合簡單,很快就能夠整合跑起來
4)伺服器端推送併發量支援大、延遲小
三、操作步驟:
•第一步:創建極光推送開發者帳號
•第二步:Portal上建立應用
•第三步:下載應用Example
•第四步:把Example(Android專案)匯入 Eclipse 裡
•第五步:執行 Example 這個應用
•第六步:Portal上推送通知
•第七步:手機上收到通知
•第八步:Portal上推送訊息
•第九步:在LogCat中檢視收到的訊息