極光推送>>java SDK服務端集成後臺項目

PS:若是你是第一次用推送,那就直接按照個人步驟來,再去看官方文檔,這樣,更容易能理解操做流程.還有——-請耐心看

極光文檔(java SDK)請參考

[ 極光文檔 ]html


步驟一:

  • 首先,你必須在 [極光官網] 上註冊一個帳號
  • 其次,註冊完後登陸,選擇極光開發者服務
    這裏寫圖片描述
  • 進去以後,建立一個應用,已有應用可跳過
    這裏寫圖片描述前端

  • 建立完成
    這裏寫圖片描述java

  • 進入應用,看到AppKey和MasterSecret,這兩個參數在sdk集成的時候會用到
    這裏寫圖片描述android


項目中的操做

  • 我是直接用的maven庫,畢竟這個年頭手動到jar包的項目估計沒幾個了,若是你是手動導入jar,那麼,請去官網下載jar包-o-

Maven方式導入極光推送的依賴jar包

  • PS:將下面所有jar複製到你項目的pom.xml裏面(我項目以前原本就有log4j,就沒有寫到下面,導入的時候注意下,能夠參考官網的jar包)
<dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jpush-client</artifactId>
    <version>3.2.17</version>
</dependency>

<dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jiguang-common</artifactId>
    <version>1.0.3</version>
</dependency>
<dependency>
   <groupId>io.netty</groupId>
   <artifactId>netty-all</artifactId>
   <version>4.1.6.Final</version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.3</version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>1.7.7</version>
</dependency>

 


記住,如下代碼,若是你是單純的複製粘貼,那麼你確定會報錯,有博主本身項目的參數,因此,請複製粘貼後看一下參數(提示什麼的)

而後在項目中建立一個包和一個類,(類放到該包下)取名隨便取

我是這麼取得:

com.XXX.jdpush //包名
jdpush //類名ios

  • 接下來是在jdpush類的操做
    其實,極光已經給咱們集成好了,只需調用推送方法便可web

    如今在jdpush類中,先進行android的推送(第一個方法)

  • 在jdpush類中,建立一個方法 : jpushAndroid
    別忘了!!!!!! app_key和masterSecret 是必須的
 1  //極光推送>>Android
 2    //Map<String, String> parm是我本身傳過來的參數,同窗們能夠自定義參數
 3    public static void jpushAndroid(Map<String, String> parm) {
 4        // 設置好帳號的app_key和masterSecret 
 5        String appKey = "**************";
 6        String masterSecret = "************";
 7        //建立JPushClient(極光推送的實例)
 8        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
 9        //推送的關鍵,構造一個payload 
10        PushPayload payload = PushPayload.newBuilder()
11             .setPlatform(Platform.android())//指定android平臺的用戶
12             .setAudience(Audience.all())//你項目中的全部用戶
13             .setNotification(Notification.android(parm.get("msg"), "這是title", parm))
14             //發送內容,這裏不要盲目複製粘貼,這裏是我從controller層中拿過來的參數)
15             .setOptions(Options.newBuilder().setApnsProduction(false).build())
16             //這裏是指定開發環境,不用設置也不要緊
17             .setMessage(Message.content(parm.get("msg")))//自定義信息
18             .build();
19 
20        try {
21             PushResult pu = jpushClient.sendPush(payload);  
22         } catch (APIConnectionException e) {
23             e.printStackTrace();
24         } catch (APIRequestException e) {
25             e.printStackTrace();
26         }    
27    }

 

而後又在jdpush類中,再進行ios的推送(第二個方法)

  • 在jdpush類中,建立一個方法 : jpushIOS
    又別忘了!!!!!! app_key和masterSecret 是必須的
 1 //極光推送>>ios
 2    //Map<String, String> parm是我本身傳過來的參數,同窗們能夠自定義參數
 3    public static  void jpushIOS(Map<String, String> parm) {
 4        // 設置好帳號的app_key和masterSecret是必須的
 5        String appKey = "*********************";
 6        String masterSecret = "**********************";
 7 
 8        //建立JPushClient
 9        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
10        PushPayload payload = PushPayload.newBuilder()
11             .setPlatform(Platform.ios())//ios平臺的用戶
12             .setAudience(Audience.all())//全部用戶
13             .setNotification(Notification.newBuilder()
14             .addPlatformNotification(IosNotification.newBuilder()
15                             .setAlert(parm.get("msg"))
16                             .setBadge(+1)
17                             .setSound("happy")//這裏是設置提示音(更多能夠去官網看看)
18                             .addExtras(parm)
19                             .build())
20                     .build())
21             .setOptions(Options.newBuilder().setApnsProduction(false).build())
22             .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定義信息
23             .build();
24 
25        try {
26             PushResult pu = jpushClient.sendPush(payload);
27 
28         } catch (APIConnectionException e) {
29             e.printStackTrace();
30         } catch (APIRequestException e) {
31             e.printStackTrace();
32         }    
33    }

 

PS:

  • 以上只是列出了2種推送的方法,(通常設置安卓和ios就夠了)還有更多(去看看官網)好比推送winPhone平臺,安卓andIos,所有平臺,等等等等,自定義去組合,反正你寫的方法能夠調用
  • 極光已經集成好了衆多方法,同窗們都是能夠直接 . 點出來的,好比,想設置環境指定爲開發,那麼就在方法裏設置:

.setOptions(Options.newBuilder().setApnsProduction(false).build())api

 


  • 你們能夠將app_key和masterSecret 定義爲全局變量,將推送方法定義爲靜態,這樣更方便調用
  • 若是你還想再設置其餘推送的系統參數,那麼,能夠去參考,裏面有參數講解

 

[ 極光文檔Push API v3 ] markdown

————————————————–

我用的是SSM框架,因此在controller裏面調用我寫的推送方法,其餘框架調用推送方法也同樣

調用簡直不要太簡單

controller:

 1 //這是個人添加文章的接口方法
 2 //如今我要添加一篇文章後,進行推送
 3 public Map<String, Object> addArticle() throws Exception {
 4 Map<String, Object> result = new HashMap<String, Object>();
 5 ....
 6 //省略文章添加的步驟
 7 
 8 //從前端頁面傳個參數過來判斷是否推送
 9    if((infoMap.get("is_push").toString()).trim().equals("1")){
10        //設置推送參數
11        //這裏同窗們就能夠自定義推送參數了
12         Map<String, String> parm =new HashMap<String, String>();
13         //這是個人文章id
14         parm.put("id",(""+id).trim());
15         //文章標題
16         parm.put("Atitle",(String) infoMap.get("Atitle") );
17         //設置提示信息,內容是文章標題
18         parm.put("msg",(String) infoMap.get("Atitle") );
19         //調用ios的
20         Jdpush.jpushIOS(parm);
21         //而後調用安卓的
22         Jdpush.jpushAndroid(parm);
23     }
24   return result;
25 }

 

這樣就推送完了….


童鞋們可能出現的的錯誤

推送後報錯了app

Your request params is invalid. Please check them according to error message.
Error response from JPush server. Should review and fix it.
//而後狀態碼是
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 HTTP Status: 400
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Error Code: 1011
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Error Message: cannot find user by this audience
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Msg ID: 4241206476框架

  • 這種的話不要慌,去看看你的極光開發者服務>>點進去你的應用>>點擊推送>>選擇是web|Api下拉框
    這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

應該會看到一條紅色的推送記錄

好比:

這裏寫圖片描述

——這就是發送失敗了,爲何呢?提示是:

這裏寫圖片描述

就是說,你當前項目中

沒有用戶!!!

沒有用戶!!!

沒有用戶???

這就很尷尬了
若是你的項目中有用戶,
可是,是你的參數(setAudience)設置錯了,也會也會報錯.


po一條視頻教程(內容比較簡單,試着去理解):

[ 極客學院>>極光推送javaSDK集成使用 ]

還有要注意的是app_key和masterSecret 是必須的

 


2017-09-16 補充:

PS:推送全部平臺
注意事項:安卓直接忽略開發環境和生產環境,可是ios對環境敏感哦~~~~
(就是安卓不論生產開發都會推送,可是ios必須指定才能推,默認生產模式)

 1  //極光推送>>All全部平臺
 2    public static void jpushAll(Map<String, String> parm) {
 3        // 設置好帳號的ACCESS_KEY和SECRET_KEY
 4 
 5        //建立JPushClient
 6        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
 7        //建立option
 8 
 9        PushPayload payload = PushPayload.newBuilder()
10             .setPlatform(Platform.all())  //全部平臺的用戶
11             .setAudience(Audience.registrationId(parm.get("RegId")))//registrationId指定用戶
12             .setNotification(Notification.newBuilder()
13                     .addPlatformNotification(IosNotification.newBuilder()
14                             .setAlert(parm.get("msg"))
15                             .setBadge(+1)
16                             .setSound("happy")
17                             .addExtras(parm)
18                             .build())
19                     .addPlatformNotification(AndroidNotification.newBuilder()
20                             .addExtras(parm)
21                             .setAlert(parm.get("msg"))
22                             .build())
23                     .build())
24             .setOptions(Options.newBuilder().setApnsProduction(true).build())//指定開發環境
25             .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定義信息
26             .build();
27        try {
28             PushResult pu = jpushClient.sendPush(payload);
29         } catch (APIConnectionException e) {
30             e.printStackTrace();
31         } catch (APIRequestException e) {
32             e.printStackTrace();
33         }    
34    }
相關文章
相關標籤/搜索