2012年調研的推送市場(轉)

1、Android Push功能現狀javascript

Push可以有效地激活用戶更多地使用 App,目前大多數應用都有Push功能。html

Push功能依賴於Push服務,如今主流的智能手機操做系統都集成了免費的Push服務,如IPhoneAPNS(Apple Push Notification service)windowsphoneMPNS(Microsoft Push Notification serviceAndroidGCM (GoogleCloud Messaging)java

可是因爲Android操做系統是開源的,不少手機廠商都沒有預裝Google服務,而且Google服務在國內不穩定,因此國內沒法使用GCM實現Push功能,這種狀況下咱們只能使用第三方的Push服務或本身開發Push服務。node

開發及時的Push服務首先要考慮到性能、併發量、安全性等因素,它是一個很複雜的系統,固然若是App活躍用戶數不多,也能夠下降複雜性。android

國內應用開發商大多本身部署一個簡單的Http服務,客戶端每隔一段時間到服務器查詢,這種方式的缺點也是顯而易見的web

Ø  HTTP請求的數據包較大,會增長數據流量數據庫

Ø  不夠及時,若是輪詢的時間間隔過短就會很耗電、耗流量json

2、第三方Push服務介紹windows

因爲上述一些緣由,不少的第三方Push服務應運而生,服務提供商大多數是國外的安全

一、 Urban Airship

Urban Airship是業界最知名的一個提供推送服務的平臺,每個月的推送數量達到5.2億次,平均每分鐘的信息發送量約爲1.3萬次。

除了基本推送服務外,UrbanAirship還提供Rich Push:讓Push信息能夠帶HTML、視頻、音頻等多媒體信息。此外,UrbanAirship還爲iOSAndroid提供In-App Purchase(IAP)服務,幫助開發者處理內容存放和安全支付等問題。Urban Airship提供了一個管理後臺。開發者在這裏不只能用信息編輯界面來發送Push,還能夠監測Push消息的傳達狀況,觀察用戶是否產生了交互等統計信息。

 

推送服務支持如下三個平臺:

Ø  IOS

Ø  Android

Ø  BlackBerry

 

收費標準(按月活躍用戶數計費):

0 to10,000users              $199

10,001to 25,000 users     $499

25,001to 50,000 users     $999

50,001to 75,000 users     $1,499

75,001to 100,000 users  $1,999

活躍用戶數超過100,000,按0.24$計費

詳細的收費標準請參考:http://urbanairship.com/pricing/

有網友說只要每個月推送量小於一百萬條就免費,在官網沒有找到,估計這是之前的政策

 

技術支持

官方提供客戶端和ServerSDK,很方便調用,而且有完善的文檔

 

官方網站:http://urbanairship.com/

二、 push.io

push.io也是一個很出名的推送服務平臺,已經成功推送了60億次通知,固然和Urban Airship比還差一大截。

 

支持如下平臺:

Ø  iOS

Ø  Android

Ø  Windows Phone

Ø  Nokia Ovi and S40

 

收費標準:

0.01$/活躍用戶/

250k users享受12.5%的優惠

500k users 享受25%的優惠

超過1百萬users享受50%的優惠

具體收費標準請參考:http://push.io/pricing/

 

技術支持:

提供SDK和文檔

 

不足:

Android SDK使用GCM服務實現的,因此不適合咱們使用

 

官方網站:http://push.io

三、 Pubnub

pubnub是一個雲端即時消息服務,經過它咱們能夠很方便地建立本身的即時應用。

 

支持的平臺:

因爲是跨平臺的,因此支持全部平臺

 

收費標準:

25 $/包含天天2500活躍用戶

而後每發送1百萬條消息須要額外支付1$,每增長1000個活躍用戶需額外支付10$

 

不足:

支持httpwebsocket(長鏈接,可是數據是經過http協議傳輸的)協議,因爲java沒有Websocket協議,因此是使用Http協議輪詢,固然也能夠用Socket模擬Websocket

官方提供的androidSDK是使用Http協議,javascript SDK使用WebSocket協議。

另外,pubnub的每條消息限制在1800字節

 

官方網站:http://www.pubnub.com/

四、 極光推送

極光推送是國產的一個免費的推送服務,架構很是相似Urban Airship,不少後臺網頁和操做也基本上和Urban Airship同樣。

 

支持的平臺:

Ø  Android

Ø  IOS

 

收費標準:

免費

 

技術支持:

提供sdk和開發文檔

 

不足:

因爲剛上線,性能、併發量、安全性等方面還未知,並且沒有承諾永久免費,因此仍是有風險的

 

官方網站:http://jpush.cn/index.jsp

3、自主開發push服務

Push服務是一個很複雜的系統,要考慮到性能、併發量、安全性等因素,這些都是技術上的難題,咱們須要慢慢摸索、積累。

咱們能夠參考上述幾個服務平臺,看看他們是怎麼作的

 

設計角度:

Ø  支持多應用,每一個應用分配惟一appKey

Ø  支持多平臺

Ø  支持發送到全部設備

Ø  支持發送到指定設備

Ø  支持按時間段發送

Ø  及時推送

Ø  統計推送規律

 

技術角度:

Ø  使用socket長鏈接,消息可以及時達到

Ø  優化協議,減小數據包大小

Ø  通常使用json數據格式

 

流程:

Ø  生成設備惟一ID

Ø  註冊到pushserver

Ø  等待消息

Ø  收到消息

Ø  彈出通知

 

我的對服務器架構的想法:

首先服務器應該是分佈式的、可擴展的,其中一個服務做爲總服務,而後架設多個子服務器,終端設備須要先鏈接到總服務拿到須要鏈接的子服務器地址,而後再鏈接到具體的子服務器,總服務用於接收各app運營後臺提交的push請求,而後經過子服務器分發到每一個終端設備。

流程:

服務器之間的交互:

》架設總服務

》架設子服務

》子服務鏈接並登陸到總服務

》定時向總服務報告鏈接狀況

客戶端登陸過程:

》鏈接到總服務並獲取子服務器地址

》鏈接並登陸到子服務

》到數據庫查詢有沒有發往此客戶端的push

》若是有就發送,發送成功後刪除

運營後臺發送push過程:

》運營後臺向總服務發送push數據

》總服務把數據保存到數據庫

》而後把此push下發到子服務

》子服務在鏈接池裏查找有沒有發送對象

》發送到對應的客戶端並刪除數據庫裏對應的數據

 

附件是我用node.js寫的一個demo,徹底按照上面的架構寫的,一個有四個模塊,server:總服務,nodeServer:子服務,client:客戶端,app:運營後臺

使用方法:

須要先安裝node.js環境(http://nodejs.org),安裝完成後在cmd裏輸入命令:nodepath\fileName.js

》打開server,自動開始監聽nodeServer的鏈接

》而後自動開啓一個httpServer,用於監聽apppush請求

》打開nodeServer,自動鏈接並登陸到server,而後自動監聽client鏈接

》打開client,自動建立10000個到nodeServer的鏈接

》打開app,自動向server發送多條push,而後push下發到nodeServer,最後分發到各client

4、總結

Urban Airship和極光推送這兩個第三方推送服務平臺是各方面相對比較好的,以咱們目前的活躍用戶量來看,若是使用Urban Airship,每個月大概須要支付199$,我以爲也能夠承受,若是使用極光推送,則須要承擔風險。

或者咱們也能夠嘗試自主開發一個Push服務,如今咱們的活躍用戶量較少,性能和併發量方面能夠下降一些標準,這樣既能夠解決咱們面臨的問題,也能夠鍛鍊咱們的能力。

 

發件人: Jin ZhengBao(金正寶) 
發送時間: 2012年10月30日 14:08
收件人: Zhao LeiYong(趙雷勇)
抄送: Chen Meng(陳孟); Shan PengFei(單鵬飛); Ning Chao(寧超)
主題: 第三方推送服務調研

 

雷勇 

 

參考如下文章。調研下第三方推送服務(國內外的)。仔細看看文檔。寫個demo試試,給出個可行性報告。

相關文章
相關標籤/搜索