Android推送服務:百度雲推送

來源:互聯網
上載者:User

一、推送服務簡介

訊息推送,顧名思義,是由一方主動發起,而另一方與發起方以某一種方式建立串連並接收訊息。在Android開發中,這裡的發起方我們把它叫做推送伺服器(Push Server),接收方叫做用戶端(Client)。相比通過輪詢來擷取新訊息或通知,推送無論是在對用戶端的資源消耗還是裝置耗電量來說都比輪詢要好,所以,目前絕大多數需要及時訊息推送的App都採用Push的方式來進行訊息通知。

Android生態系統原本提供了類似於Apple iOS推送服務APNS的GCM(Google Cloud Messaging for Android),以前叫C2DM,但是由於某些原因,導致這項服務在國內不是很好使,為了彌補這個不足,並且我朝各大同胞又想使用Android推送服務,所以國內各大平台陸續推出了GCM的替代品,今天要介紹的就是其中一家,由百度提供的雲推送。另外,國內做訊息推送服務的還有極光推送和個推等,他們的客戶包括新浪微博、淘寶等國內一線大公司。

推送的實現技術簡單來說就是利用Socket維持Client和Server間的一個TCP長串連,通過這種方式能大大降低由輪詢方式帶來的Device的耗電量和資料訪問流量。目前,百度雲推送提供的推送服務支援的單一訊息體大小是4k,如果超過4k,則建議在訊息內攜帶服務要求URL進行二次請求。目前,百度雲推送針對Android端提供通知推送,簡訊推送以及富媒體推送。

二、使用情境

1. 單播訊息推送

Push Server向指定的裝置(Device)或是使用者(User)推送訊息,一個使用者對應一個userID,一個User可能擁有多台Device,我們希望向同一個userID推送訊息時,他所有綁定了userID的Device都能收到訊息。百度雲推送給出的解決方案是通過Client向Push Server註冊,並在Client端的監聽連接埠取得Push Server返回的 channelID和userID,channelID指定一個終端,在向Push Server註冊的過程中,Device可以發送IMIE碼或者UUID作為唯一標示,在Push Server註冊後再返回給Client產生的channelID和userID。這兩個ID擷取到後由開發人員自我維護,註冊完畢後,Push Server維護一個註冊裝置列表,這個列表維護了userID和channelID以及與Device對應的關係,當需要向指定的裝置或使用者推送訊息時,Push Server會首先遍曆這個裝置列表,通過這兩個ID來做唯一性判斷並找到需要推送訊息的Device,然後就可以進行訊息推送了。

執行個體:使用者A發表問題時,記錄問題id及其對應的A的userID(或channelID),使用者B發表問題回答時,通過服務端API向問題id對應的userID(或channelID)指向的Device推送答案。

2. 分組訊息推送

百度雲推送通過對Client設定標籤(Tag)的方式來進行使用者分組,Tag的產生方式可以是由Client維護也可以由Server收集,Push Server針對不同的Tag進行推送過濾,最終將訊息推送到指定的Client。無論是由Client主動設定的Tag還是由Server根據使用者使用習慣收集的,都由Push Server進行統一管理,在基於Tag的分組訊息推送實現上,Push Server首先根據指定Tag從所有Tag下遍曆出的對應的登入的Device,從而可以獲得與Device對應的userID和channelID,繼而可以針對指定Tag進行分組訊息推送。對比單播訊息推送,分組訊息推送在推送周期上勢必要長一些,並且在待推訊息列表的維護上也需要做一些處理,哪些訊息是推送成功的,哪些是失敗的,這需要接收訊息推送的Client在接收到訊息後給Push Server一個訊息回執,這樣就保證了訊息送達的準確性,如果訊息推送失敗,則分組列表裡的待推訊息會繼續推送,直到推送訊息成功。另外,在訊息推送的即時性上,分組訊息推送對比單播訊息推送會根據分組訊息佇列的先後存在一個訊息接收的延時,好比現在微信公眾帳號的推送,就是一個分組訊息推送的執行個體,在訊息接收的時效性上對比單播推送存在一定的延時性。

另外,還有一類訊息推送使用情境,就是廣播訊息,該類型可以理解為分組訊息的一個特列,即向所有的Tag對應的Client推送訊息。廣播訊息是對全體集合的一個訊息推送,在訊息佇列維護和訊息推送時效性上比單個或幾個Tag的分組推送成本要高。

執行個體:給應用提供喜好設定頁面,使用者勾選不同的類別,觸發對應Tag的設定,這種方式是由Client主動維護Tag。或者使用者閱讀了某個類別的圖書,觸發對應Tag的設定,在服務端,給指定類別的圖書設定Tag,後續會根據服務端收集的Tag給應用推送該Tag下的新書資訊,這種方式就是由服務端來維護Tag分組。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.