之前項目需要做一個推送功能,最開始我沒有想過用第三方推送服務。想着可以用已知技術方式完成,例如定時到服務器看看是否有新的消息,有的話,就讀取下來並顯示,但是這種方式很浪費客戶以及服務器的資源,當然這種方式在我們項目里是不可取的。再后來我在網上搜了一些,說是可以用web socket實現我的功能,但是我在網上查了一下使用方式,看了一上午一頭霧水。即使我可以一周兩周內用websocket實現我的推送,那我又拿什么來保證我自己寫的推送程序的到達率和速度呢?維護成本一定也會隨着增加!況且我們也不允許花太多開發成本在這個項目上!
經過上面的一番周折后,我跟項目組提出使用第三方的推送服務,原因很簡單,第三方推送服務可以滿足我們的需求,縮短我們的開發測試維護成本,術業有專攻,它們在推送方面更有優勢,服務質量也有保證!經過幾番對比后,我們最終決定使用了GoEasy推送。 它真正的從根本上解決了我們的問題!對於他們的服務質量很滿意,注冊成功后,你可以獲得他們的聯系方式,問題處理得很及時,不像有些公司的客服,發封郵件好幾天都沒有任何信息!從而也解決了我們的后顧之憂!
廢話不多說,直接進入正題,如何實現:
1. 從GoEasy獲取appkey
appkey是驗證用戶的有效性的唯一標識。
- 注冊賬號。 GoEasy官網:http://goeasy.io
- 用注冊好的賬號登錄到GoEasy的后台管理系統,創建您自己應用(application).
- Application創建好之后系統會自動為您生成appkey
系統會生成兩個keys,一個Super key和一個Subscribe key;它們的區別在於前者既可以訂閱又可以推送,但后者只能用於訂閱。
2. GoEasy實現向特定用戶群推送的原理
知道了他們的推送原理,可以更加方便我們了解他們的服務,以及理解我們寫的代碼。其實原理很簡單,只需要確定哪些用戶需要接收信息,然后讓這些用戶都訂閱一個相同的channel(頻道)。 然后再往這個平台上推送消息即可!所有關鍵在於channel,channel一致,則可以接收到信息,否則收不到!
對於訂閱必須要的信息有:Appkey, channel
對於推送必須要的信息有:Appkey, channel, content
3. 用GoEasy實現訂閱(接收)的實例
1 <script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script> 2 3 <script type="text/javascript"> 4 var goEasy = new GoEasy({appkey: 'your appkey'}); 5 goEasy.subscribe({ 6 channel: 'your_channel', 7 onMessage: function(message){ 8 alert('接收到消息:'+message.content);//拿到了信息之后,你可以做你任何想做的事 9 } 10 }); 11 </script>
有了這幾行代碼后,只要保證網絡暢通的情況下,頁面會自動彈出你從任何平台上推送的信息。
4. 用GoEasy實現推送及接收的實例
目前GoEasy支持三種推送方式: Java后台推送(它們有提供JAVA SDK和 maven遠程倉庫), JS推送,RestAPI推送(有了RestAPI,我們就可以用PHP, .NET, Ruby…來推送信息了,很方便)
說了這么多,來我們看一下怎么用GoEasy的三種方式分別實現推送吧。
4.1. 用GoEasy SDK推送
1. Java SDK的獲取方式,方式一,直接在goeasy的官網上進行下載;方式二,用maven遠程庫直接導入到項目中。盡管官網上已經做了相同的說明了,我這里還是把關鍵點帖出來,方便大家查看。
GoEasy SDK下載鏈接:http://maven.goeasy.io/service/local/artifact/maven/redirect?r=releases&g=io.goeasy&a=goeasy-sdk&v=0.3.3&e=jar
GoEasy遠程maven庫的配置:
1 <repository> 2 <id>goeasy</id> 3 <name>goeasy</name> 4 <url>http://maven.goeasy.io/content/repositories/releases/</url> 5 </repository> 6 … 7 <dependency> 8 <groupId>io.goeasy</groupId> 9 <artifactId>goeasy-sdk</artifactId> 10 <version>0.3.3</version> 11 </dependency>
需要注意的是:GoEasy需要依賴兩個額外的jar 包:
gson.jar : http://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar
slf4j-api.jar : http://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar
2. 實例化GoEasy對象
1 GoEasy goEasy = new GoEasy("your appkey");
c. 推送消息
1 goEasy.publish('your_channel', 'First message');
4.2. JS推送
a. 引入goeasy.js
1 <script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>
b. 實例化Goeasy對象,並用publish函數進行推送
1 <script type="text/javascript"> 2 var goEasy = new GoEasy({appkey: 'your appkey'}); 3 goEasy. publish ({ 4 channel: 'your_channel', 5 message: 'Second message!' 6 }); 7 </script>
4.3. 用RestAPI進行推送
URL: https://goeasy.io/goeasy/publish
Method: Post
參數:appkey, channel, content
例如:https://goeasy.io/goeasy/publish?appkey={your_appkey}&channel={your_channel}&content={your_message}
GoEasy官網:http://goeasy.io
快速入門:http://goeasy.io/www/started
文檔下載:http://goeasy.io/www/documents