1. 添加依賴
<!-- 極光推送 --> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.4.6</version> </dependency>
2. 推送工具類
/** * create by 星航指揮官 * create on 2020/11/22 * 不過是大夢一場空 * 不過是孤影照驚鴻 */ public class JpushUtils { // 設置app_key和masterSecret private static String APP_KEY = "71e7432cf51877daf5334115"; private static String MASTER_SECRET = "acf5f4dd6302eaebf24c1eef"; /* * android端推送 * parm參數是Controller層傳來的參數,設置了通知的具體內容 * */ public static void jpushAndroid(Map<String, String> parm) { //建立JPushClient(極光推送的實例) JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY); //推送的關鍵,構造一個payload PushPayload payload = PushPayload.newBuilder() .setPlatform(Platform.android())//指定android平臺 // .setAudience(Audience.all())//通知所有 即廣播(免費版一天只有10次機會) // .setAudience(Audience.alias(parm.get("alias")))//根據別名發送 .setAudience(Audience.tag(parm.get("tag")))//根據標籤發送 // .setAudience(Audience.registrationId(parm.get("id")))//指定用戶發送 .setOptions(Options.newBuilder().setApnsProduction(true).setTimeToLive(7200).build()) // apnProduction指定開發環境 true爲生產模式 false 爲測試模式 (android不區分模式,ios區分模式) 不用設置也不要緊 // TimeToLive 緩存時間 .setNotification(Notification.android(parm.get("msg"), parm.get("title"), parm)) //發送通知 .setMessage(Message.content(parm.get("msg")))//自定義信息 和上一個二選一 固然也能夠一塊兒發 .build();//建立 try { PushResult pushResult = jpushClient.sendPush(payload); System.out.println(pushResult.toString()); } catch (APIConnectionException e) { e.printStackTrace(); } catch (APIRequestException e) { e.printStackTrace(); } } /* * ios端推送 * parm參數是Controller層傳來的參數,設置了通知的具體內容 * */ public static void jpushIOS(Map<String, String> parm) { //建立JPushClient JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY); PushPayload payload = PushPayload.newBuilder() .setPlatform(Platform.ios())//ios平臺 .setAudience(Audience.all())//全部用戶 //.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用戶 .setNotification(Notification.newBuilder() .addPlatformNotification(IosNotification.newBuilder() .setAlert(parm.get("msg")) .setBadge(+1) .setSound("happy")//這裏是設置提示音 .addExtras(parm) .build()) .build()) .setOptions(Options.newBuilder().setApnsProduction(false).build()) .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定義信息 .build(); try { PushResult pushResult = jpushClient.sendPush(payload); System.out.println(pushResult.toString()); } catch (APIConnectionException e) { e.printStackTrace(); } catch (APIRequestException e) { e.printStackTrace(); } } /* * android於ios端同時推送 * parm參數是Controller層傳來的參數,設置了通知的具體內容 * */ public static void jpushAll(Map<String, String> parm) { //建立JPushClient JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY); //建立option PushPayload payload = PushPayload.newBuilder() .setPlatform(Platform.all()) //全部平臺的用戶 .setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用戶 .setNotification(Notification.newBuilder() .addPlatformNotification(IosNotification.newBuilder() //發送ios .setAlert(parm.get("msg")) //消息體 .setBadge(+1) .setSound("happy") //ios提示音 .addExtras(parm) //附加參數 .build()) .addPlatformNotification(AndroidNotification.newBuilder() //發送android .addExtras(parm) //附加參數 .setAlert(parm.get("msg")) //消息體 .build()) .build()) .setOptions(Options.newBuilder().setApnsProduction(true).build())//指定開發環境 true爲生產模式 false 爲測試模式 (android不區分模式,ios區分模式) .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定義信息 .build(); try { PushResult pushResult = jpushClient.sendPush(payload); System.out.println(pushResult.toString()); } catch (APIConnectionException e) { e.printStackTrace(); } catch (APIRequestException e) { e.printStackTrace(); } } }
3. 推送消息
@RequestMapping("/androidPush") public Result pushMessageToAndroid(){ //建立參數集合 Map<String, String> parm = new HashMap<>(); //設置標題 parm.put("title","Alin"); //設置內容 parm.put("msg","Hello Alin !"); //設置標籤 parm.put("tag","0x412"); //設置別名 parm.put("alias","0x123"); //發送推送 JpushUtils.jpushAndroid(parm); return new Result(49,"SUCCESS",null); }
4. 小提示
若是極光推送沒有用戶會報錯誤碼:1011java
此時先檢查集成是否成功android
再檢查標籤或者別名是否是設置錯誤ios