要使用極光消息推送必須先在官方網站上註冊帳號,並添加應用.java
產品介紹:https://docs.jiguang.cn/jpush/guideline/intro/android
註冊開發者帳號:https://www.jiguang.cn/accounts/registerjson
註冊完成後須要添加應用後端
應用配置好後有兩個重要的數據,必須獲取到,在後面發送消息的時候要使用:api
要作極光推送,得先認識極光帳號的後端管理平臺,應爲在開發的時候不少參數和配置來自於後端管理系統服務器
先宏觀認識一下消息推送流程圖:app
後端管理說明:https://docs.jiguang.cn/jpush/console/Instructions/maven
1 <!-- 極光推送 --> 2 <dependency> 3 <groupId>cn.jpush.api</groupId> 4 <artifactId>jpush-client</artifactId> 5 <version>3.3.12</version> 6 </dependency>
代碼參考文檔:ide
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 }
執行發送後,若是發送成功,咱們能夠在後端管理系統中看見消息詳情
1.剛創建的極光帳號因爲配置的緣由,不少發送條件是測試不了的,必定要信息閱讀接口文檔,以下:
2.cid並不是任意編號,而是有規則的
3.遇到問題再補充....