JPush集成方案

如今的移動應用中消息推送已經成爲不可或缺的功能了,這樣能夠增長與用戶的交互。java

 

使用消息推送的方法有不少,原理大體是:移動端與消息服務器保持一個長鏈接,一旦服務器有消息就推給客戶端,客戶端收到消息作相應的處理。android

 

消息推送 參考的實現方式:

一、XMPP協議實現的openfire能夠做爲消息服務器。客戶端也有asmack封裝好了xmpp協議。openfire提供了一套IM所需的全部功能,並且支持插件形式的二次開發。ios

 

二、開源項目androidpn,也是實現了XMPP協議。git

 

三、JPush極光推送。等一系列第三方的推送平臺。github

 

各自的優缺點:數據庫

一、openfire提供了IM的全部功能,功能很是強大,可是移動端若是隻想集成消息推送的話,openfire就顯得非常笨重。並且openfire的二次開發資料不多,通常需針對公司的業務開發,使用公司本身的數據庫。服務器端開發成本高,週期長。openfire的併發鏈接好像也只有5000左右(作的比較好的狀況下,通常都達不到這個數)。移動客戶端也要根據xmpp協議與openfire服務器進行交互來完成消息推送。因此客戶端的開發週期也長。api

 

二、androidpn也是實現的XMPP,可是隻實現了核心的功能,也須要針對公司的業務進行二次開發。基本和openfire的缺點差很少。服務器

 

三、JPush集成很是簡單,客戶端和服務端都不須要進行二次開發,只要配置一下就能夠了,最多發送消息這塊服務端須要調用一下Jpush的接口,就一個http請求,很是簡單。併發

 

客戶端集成步驟:

一、首先去JPush的開發者官網https://www.jpush.cn/  註冊賬號app

 

二、用剛剛的賬號登陸開發者網站

 

三、點擊用戶頭像下的控制檯https://www.jpush.cn/common/apps/



四、建立應用。

 

五、打開開發者網站的文檔選項 http://docs.jpush.cn/display/dev/Index根據裏面的集成步驟集成Jpush。

 

服務端集成:

客戶端集成完,咱們的移動端的app就能夠收到通知和消息了,可是發消息須要到Jpush的開發者網站去發送,這樣的話就很不合理。正常狀況確定是咱們本身的服務器根據狀況發送通知和消息到客戶端的。不可能咱們服務端須要發通知和消息的時候須要有我的去打開Jpush的網站去發送通知。

 

這些狀況Jpush已經爲咱們想到了,咱們服務器端只要在發通知的地方調用Jpush提供的發佈接口就能夠了,就是一個HTTP請求而已。

 

推送接口詳細描述:http://docs.jpush.cn/display/dev/Push-API-v3

 

咱們能夠本身寫代碼發送http請求,這邊有一個第三方的開源項目是對Jpush推送接口的封裝:https://github.com/jpush/jpush-api-java-client

下載下來將src下的cn.jpush.api文件所有複製到服務端項目中,而且將libs下的jar包加入到工程的build path。


咱們就是推送一條通知或者消息。

代碼樣例:
  1. // 這是在極光網站上申請的密鑰  
  2. String masterSecret = "1c59df909c3790cc7e1fc601";  
  3. // 應用的appKey,一樣在網站上申請  
  4. String appKey = "3c92c6395227cbe166d1a853";  
  5. // 創建JpushClient類,用來發送消息的對象  
  6. JPushClient client = new JPushClient(masterSecret, appKey);  
  7. try {  
  8.     // client.sendNotificationAll("hello world");  
  9.   
  10.     // client.sendMessageAll("this is a message");  
  11.     PushPayload payload = PushPayload  
  12.             .newBuilder()  
  13.             .setPlatform(Platform.android_ios())  
  14.             .setNotification(Notification.alert("jPush is useful!!")).setAudience(Audience.alias("xxx"))  
  15.            .build();  
  16.             client.sendPush(payload);  
  17.   
  18.         } catch (APIConnectionException e) {  
  19.             e.printStackTrace();  
  20.         } catch (APIRequestException e) {  
  21.             e.printStackTrace();  
  22.         }  

咱們通常使用cn.jpush.api.JPushClient.sendPush(PushPayload pushPayload)這個方法就夠了。

 

這是推送的一個方法,參數PushPayload能夠用來構造通知和消息,而且能夠進行細節的設置,好比:platform,alias,tag,消息或是通知。具體能夠參考JPushClient類的

sendAndroidNotificationXXXXX和sendAndroidMessageXXXXXX方法,這些方法裏面就是構造一個PushPayload。

 

到此集成結束。


服務端集成樣例: 服務端樣例
相關文章
相關標籤/搜索