移動設備的統一的推送服務 Uniqush

jopen 12年前發布 | 20K 次閱讀 移動應用 移動開發

移動設備的統一的推送服務 Uniqush

Uniqush是一個自由和開放源碼軟件,它提供了一個移動設備的統一的推送服務。

通過服務器端運行 uniqush,你可以到任何受支持的移動平臺接受推送通知。

手機推送, Golang, C2DM, APNS, Android, iOS

 

= 功能描述 =

更清晰的配圖版功能描述在這里: http://uniqush.org/wiki/UniqushStory

目前的主要智能手機平臺(Android, iOS, BlackBerry, Windows Phone)都會提 供針對各自平臺的推送服務。簡單說來,這種服務的工作方式是:

第三方App服務器有一些消息,需要推送給手機上的App -> 第三方App服務器把消 息發送給特定平臺的云服務(推送服務) -> 該云將消息推送到客戶手機

這種方式的確簡化了第三方服務器的開發,但是如果需要支持多個平臺,則需要針 對各自平臺做相應調整。Uniqush目前主要工作是在第三方服務器與各自平臺的云 服務之間建立起一套統一的接口,這樣第三方服務器就可以不用修改,而支持更多 的只能手機推送平臺。

注意:uniqush是一個*軟件*,而*不是*一個推送服務。換句話說,uniqush的用戶 需要在自己的服務器上運行uniqushuniqush.org并不提供任何推送服務(好吧, 這么說似乎有點多余,不過的確有好多人誤以為如此)。

= 第三方依賴 =

目前在github上有兩個branch,分別針對當前go的release版本和go的weekly版 本。需要依賴的第三方數據庫是redis;依賴的第三方庫包括redis.go和goconf。

redis.go的正式版本已經無法用最新的go release編譯,為此我fork了redis.go這 個項目。代碼在http://github.com/monnand/redis.go 上。同樣是兩個branch, 分別對應go的最新release和weekly版本。大家都知道,最近go的weekly變化很 大,是為了向go1轉。所以weekly和master這兩個branch也會差別較大。

goconf的官方版可以支持go的最新release(r60.3)。如果用weekly版本的話,需 要gofix再手動改些東西。我手頭已經有了修改,但是鑒于goconf目前還比較活 躍,就沒再fork出另外一個代碼庫。

= 代碼成熟度 =

這個項目是在今年8月底開始開發,9月份正式實現了現有功能,十一的時候接口做 過一次大調整,之后就是bug fix,用gofix來跟進最新版的go,還有就是提高性能 (加入對象池,緩存等等)。

目前支持android和iOS兩個平臺的推送。本來打算再加入對windows phone的支 持,但是鑒于手頭沒搞到設備,只好暫時放棄了。個人認為,代碼結構還算說得過 去,所以再加入一個平臺的支持不會有啥大改動。

現在還沒有做過大規模的測試,但是基本都可以按預期實現相應功能。

基本說來,俺對自己代碼還有點信心。

= 項目知名度 =

零,或者約等于零。原因大約是這樣的:
- 只是在golang的列表上發過一個ANN,還有就是在幾個朋友圈子里內部聊過
- 本來計劃11月左右在各個社區里說說這項目,可后來要么是我太忙,要么是看到 了go1的消息,總之,我打算改變計劃,等Go1了(但愿Go1不要成為下一個Perl6)
- Go語言變化太快——準確說,是標準庫變化,尤其是最近的幾個weekly版本,已經 無法單純用gofix來升級代碼了,必須手動修改一些代碼。我還是希望等go逐漸穩 定下來,在向其他社區宣傳。目前基本就集中在go社區和朋友圈子里。

= 項目未來發展計劃 =

- 不斷跟著Go的升級而更新代碼,直到Go1推出
- 在推出Go1之后,在其他社區內發布消息,并著手開發對windows phone的支持—— 好吧,我忽視了黑莓。但是由于黑莓的推送需要第三方安裝SDK,這就讓俺猶豫了。
- 目前的uniqush只是實現了我計劃中的一半功能,另外一半還在設計中。這個我 們可以之后聊。
- 除了服務器端代碼外,還要實現各個手機端的開發庫,簡化手機App的開發

= 總結 =

好了,如果各位對這個項目感興趣,歡迎參觀代碼。注意:github上的代碼是最新的。

項目主頁:http://www.baiduhome.net/lib/view/home/1346906738037

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!