java服務端集成極光消息推送--詳細開發步驟


1.極光推送賬號准備

  要使用極光消息推送必須先在官方網站上注冊賬號,並添加應用.

  產品介紹:https://docs.jiguang.cn/jpush/guideline/intro/

  注冊開發者賬號:https://www.jiguang.cn/accounts/register

  注冊完成后需要添加應用

  應用配置好后有兩個重要的數據,必須獲取到,在后面發送消息的時候要使用:

  

2.極光推送后端管理配置認識

  要做極光推送,得先認識極光賬號的后端管理平台,應為在開發的時候很多參數和配置來自於后端管理系統

  先宏觀認識一下消息推送流程圖:

  

  后端管理說明:https://docs.jiguang.cn/jpush/console/Instructions/

3.集成java服務端

3.1.添加maven依賴,使用官方提供的sdk

1  <!-- 極光推送 -->
2         <dependency>
3             <groupId>cn.jpush.api</groupId>
4             <artifactId>jpush-client</artifactId>
5             <version>3.3.12</version>
6         </dependency>

 

3.2.客戶端java代碼

代碼參考文檔:

https://docs.jiguang.cn/jpush/server/push/server_overview/

  1 package com.qianxingniwo.client;
  2 
  3 
  4 import cn.jpush.api.JPushClient;
  5 import cn.jpush.api.push.PushResult;
  6 import cn.jpush.api.push.model.Message;
  7 import cn.jpush.api.push.model.Options;
  8 import cn.jpush.api.push.model.Platform;
  9 import cn.jpush.api.push.model.PushPayload;
 10 import cn.jpush.api.push.model.audience.Audience;
 11 import cn.jpush.api.push.model.notification.AndroidNotification;
 12 import cn.jpush.api.push.model.notification.Notification;
 13 import org.slf4j.Logger;
 14 import org.slf4j.LoggerFactory;
 15 
 16 import java.util.ArrayList;
 17 import java.util.List;
 18 
 19 /**
 20  * @Copyright (C) 四川千行你我科技有限公司
 21  * @Author: LI DONG PING
 22  * @Date: 7/3 19:11
 23  * @Description:
 24  */
 25 
 26 public class JpushClientUtil {
 27     private static final Logger log = LoggerFactory.getLogger(JpushClientUtil.class);
 28 
 29     private final static String appKey = "應用的key(非登錄賬號)";
 30 
 31     private final static String masterSecret = "應用的密碼(非登錄密碼)";
 32 
 33     private static JPushClient jPushClient = new JPushClient(masterSecret, appKey);
 34 
 35 
 36     /**
 37      * 發送給所有安卓用戶
 38      *
 39      * @param notification_title 通知內容標題
 40      * @param msg_title          消息內容標題
 41      * @param msg_content        消息內容
 42      * @param extrasparam        擴展字段
 43      * @return 0推送失敗,1推送成功
 44      */
 45     public static int sendToAllAndroid(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
 46         int result = 0;
 47         try {
 48             PushPayload pushPayload = JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title, msg_title, msg_content, extrasparam, cid);
 49             System.out.println("推送參數:" + pushPayload);
 50             PushResult pushResult = jPushClient.sendPush(pushPayload);
 51             System.out.println("推送結果:" + pushResult);
 52             if (pushResult.getResponseCode() == 200) {
 53                 result = 1;
 54             }
 55         } catch (Exception e) {
 56 
 57             e.printStackTrace();
 58         }
 59 
 60         return result;
 61     }
 62 
 63     /**
 64      * 生產發送條件
 65      *
 66      * @param notification_title
 67      * @param msg_title
 68      * @param msg_content
 69      * @param extrasparam
 70      * @param cid
 71      * @return
 72      */
 73     private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
 74         log.info("構建推送參數,如推薦平台,接收對象");
 75         //具體參看接口文檔
 76         //https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
 77         List list = new ArrayList();
 78         // Audience.tag(list);
 79         //  Audience audience = Audience.alias("112201","112202");//別名推送
 80         // Audience audience = Audience.tag("tag1");
 81         //Audience audience = Audience.all();
 82         // Audience audience = Audience.registrationId("112201", "112202");
 83         Audience audience = Audience.segment("c8f2fff736");
 84         return PushPayload.newBuilder()
 85                 //指定要推送的平台,all代表當前應用配置了的所有平台,也可以傳android等具體平台
 86                 .setPlatform(Platform.android())
 87                 //設置發送消息id
 88                 //  .setCid(cid)
 89                 //指定推送的接收對象,all代表所有人,也可以指定已經設置成功的tag或alias或該應應用客戶端調用接口獲取到的registration id
 90                 .setAudience(audience)
 91                 // .setAudience(Audience.tag(list))
 92                 //jpush的通知,android的由jpush直接下發,iOS的由apns服務器下發,Winphone的由mpns下發
 93                 .setNotification(Notification.newBuilder()
 94                         //指定當前推送的android通知
 95                         .addPlatformNotification(AndroidNotification.newBuilder()
 96                                 .setAlert(notification_title)
 97                                 .setTitle(notification_title)
 98                                 //此字段為透傳字段,不會顯示在通知欄。用戶可以通過此字段來做一些定制需求,如特定的key傳要指定跳轉的頁面(value)
 99                                 .addExtra("androidNotification extras key", extrasparam)
100                                 .build())
101                         .build()
102                 )
103                 //Platform指定了哪些平台就會像指定平台中符合推送條件的設備進行推送。 jpush的自定義消息,
104                 // sdk默認不做任何處理,不會有通知提示。建議看文檔http://docs.jpush.io/guideline/faq/的
105                 // [通知與自定義消息有什么區別?]了解通知和自定義消息的區別
106                 .setMessage(Message.newBuilder()
107                         .setMsgContent(msg_content)
108                         .setTitle(msg_title)
109                         .addExtra("message extras key", extrasparam)
110                         .build())
111 
112                 .setOptions(Options.newBuilder()
113                         //此字段的值是用來指定本推送要推送的apns環境,false表示開發,true表示生產;對android和自定義消息無意義
114                         .setApnsProduction(false)
115                         //此字段是給開發者自己給推送編號,方便推送者分辨推送記錄
116                         .setSendno(1)
117                         //此字段的值是用來指定本推送的離線保存時長,如果不傳此字段則默認保存一天,最多指定保留十天,單位為秒
118                         .setTimeToLive(86400)
119                         .build())
120                 .build();
121     }
122 
123     /**
124      * 發送測試
125      *
126      * @param args
127      */
128     public static void main(String[] args) {
129         String num = "-0405-別名";
130         String notification_title = "推送測試-通知標題" + num;
131         String msg_title = "推送測試-內容標題" + num;
132         String msg_content = "我是內容" + num;
133         String extrasparam = "我是擴展的json" + num;
134         String cid = String.valueOf(System.currentTimeMillis());
135         int i = JpushClientUtil.sendToAllAndroid(notification_title, msg_title, msg_content, extrasparam, cid);
136         System.out.println("i=" + i);
137     }
138 }
View Code

 

3.3.發送測試

  執行發送后,如果發送成功,我們可以在后端管理系統中看見消息詳情

  

3.3.注意事項

  1.剛建立的極光賬號由於配置的原因,很多發送條件是測試不了的,一定要信息閱讀接口文檔,如下:

  

  2.cid並非任意編號,而是有規則的

  

  3.遇到問題再補充....

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM