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