java-極光推送教程
一、準備工作:
1.訪問極光推送官網:https://www.jiguang.cn/accounts/login/form
2.註冊登陸,拿到appKey和masterSecret
3.建立一個應用,安卓需要自己配置自己的裝置ios一樣的,服務端加上訪問字首和前端相對應即可。
二、工具類直接測試推送是否成功。
1 package com.hykj.common; 2 3 import cn.jiguang.common.resp.APIConnectionException; 4 import cn.jiguang.common.resp.APIRequestException; 5 import cn.jpush.api.JPushClient; 6 //import cn.jpush.api.common.resp.APIConnectionException; 7 //import cn.jpush.api.common.resp.APIRequestException; 8 import cn.jpush.api.push.PushResult; 9 import cn.jpush.api.push.model.Options; 10 import cn.jpush.api.push.model.Platform; 11 import cn.jpush.api.push.model.PushPayload; 12 import cn.jpush.api.push.model.audience.Audience; 13 import cn.jpush.api.push.model.notification.AndroidNotification; 14 import cn.jpush.api.push.model.notification.IosNotification; 15 import cn.jpush.api.push.model.notification.Notification; 16 import org.springframework.stereotype.Controller; 17 import org.springframework.web.bind.annotation.RequestMapping; 18 19 import com.fasterxml.jackson.databind.ser.std.StdKeySerializers.Default; 20 21 import java.util.HashMap; 22 import java.util.Map; 23 24 /** 25* 26* @Description:極光推送工具類 27* @author: fuzongle 28* @date:2019年5月7日 下午9:55:02 29*/ 30 @Controller 31 @RequestMapping(value="/jpush") 32 public class JPushClientUtil{ 33 34 35private static final String appKey = ""; // 必填,例如466f7032ac604e02fb7bda89 36private static final String masterSecret = "";//必填,每個應用都對應一個masterSecret 37 38 39private static final String appKey2 = ""; // 必填,例如466f7032ac604e02fb7bda89 40private static final String masterSecret2 = "";//必填,每個應用都對應一個masterSecret 41 42 / 43private static JPushClient jpush = null; 44public static final int MAX = Integer.MAX_VALUE; 45public static final int MIN = MAX / 2; 46/** 47* 儲存離線的時長。秒為單位。最多支援10天(864000秒)。 48* 0 表示該訊息不儲存離線。即:使用者線上馬上發出,當前不線上使用者將不會收到此訊息。 49* 此引數不設定則表示預設,預設為儲存1天的離線訊息(86400秒)。 50*/ 51private static long timeToLive = 60 * 60 * 24; 52public static void main(String[] args) { 53String msgTitle = "推送測試"; 54String msgContent = "看到資訊了麼,看到就推送成功了!"; 55//String tel_phone="18516779543"; 56String tel_phone="15937016361"; 57Map<String,String> extra = new HashMap<String, String>(); 58extra.put("number","CO2017082811195687100"); 59extra.put("type","money"); 60push("JLY"+tel_phone,msgTitle,extra,0); 61/*String title = "推送測試"; 62PushPayload payload = JPushClientUtil.buildPushObject_all_all_alert(title); 63System.out.println("伺服器返回資料:" + payload.toString());*/ 64} 65/** 66*所有平臺,所有裝置,內容為 content 的通知 67* 68* @param content 69* @return 70*/ 71public static PushPayload buildPushObject_all_all_alert(String content) { 72return PushPayload.alertAll(content); 73} 74 75/** 76* 生成極光推送物件PushPayload(採用java SDK) 77* @param alias 78* @param alert 79* @return PushPayload 80*/ 81public static PushPayload buildPushObject_android_ios_alias_alert(String alias,String alert, 82Map<String,String> extra,int value,String sound){ 83return PushPayload.newBuilder() 84.setPlatform(Platform.android_ios()) 85.setAudience(Audience.alias(alias)) 86.setNotification(Notification.newBuilder() 87.addPlatformNotification(AndroidNotification.newBuilder() 88.addExtras(extra) 89.setAlert(alert) 90.build()) 91.addPlatformNotification(IosNotification.newBuilder() 92.addExtras(extra) 93.setAlert(alert) 94.setBadge(value) 95.setSound(sound) 96.build()) 97.build()) 98.setOptions(Options.newBuilder() 99.setApnsProduction(false)//true-推送生產環境 false-推送開發環境(測試使用引數) 100.setTimeToLive(90)//訊息在JPush伺服器的失效時間(測試使用引數) 101.build()) 102.build(); 103} 104 105/** 106* 極光推送方法(採用java SDK) 107* @param alias 108* @param alert 109* @return PushResult 110*/ 111public static PushResult push(String alias, String alert, Map<String,String> extra,int type){ 112PushResult pushResult = null; 113if (type==0){ 114JPushClient jpushClient = new JPushClient(masterSecret, appKey,3); 115PushPayload payload = buildPushObject_android_ios_alias_alert(alias,alert,extra,1,"default"); 116try { 117pushResult =jpushClient.sendPush(payload); 118if(pushResult.isResultOK()){ 119System.out.println("ok"); 120} 121} catch (APIConnectionException e) { 122e.printStackTrace(); 123return null; 124} catch (APIRequestException e) { 125e.printStackTrace(); 126return null; 127} 128}else if (type==1){ 129JPushClient jpushClient = new JPushClient(masterSecret2, appKey2,3); 130PushPayload payload = buildPushObject_android_ios_alias_alert(alias,alert,extra,1,"default"); 131try { 132pushResult =jpushClient.sendPush(payload); 133} catch (APIConnectionException e) { 134e.printStackTrace(); 135return null; 136} catch (APIRequestException e) { 137e.printStackTrace(); 138return null; 139} 140 //}else if (type==2){ 141 //JPushClient jpushClient = new JPushClient(masterSecret3, appKey3,3); 142 //PushPayload payload = buildPushObject_android_ios_alias_alert(alias,alert,extra); 143 //try { 144 //pushResult =jpushClient.sendPush(payload); 145 //} catch (APIConnectionException e) { 146 //e.printStackTrace(); 147 //return null; 148 //} catch (APIRequestException e) { 149 //e.printStackTrace(); 150 //return null; 151 //} 152 //} 153} 154returnpushResult; 155 156} 157 158/** 159* 給多個人推送訊息 160* @param list 161*/ 162/*public static void pushManyMessage(List<PageData> list){ 163 164for(int i=0;i<list.size();i++){ 165pushMessage( 166list.get(i).get("msgTitle").toString(), 167list.get(i).get("msgContent").toString(), 168list.get(i).get("user_id").toString() 169); 170} 171 172}*/ 173 174/** 175* 保持 sendNo 的唯一性是有必要的 176*/ 177public static int getRandomSendNo() { 178return (int) (MIN + Math.random() * (MAX - MIN)); 179} 180 181 }