基于Spring boot使用极光推送

背景

用极光推送将消息推送给指定的用户,而不是通过平台手动推送,急需集成极光推送Web端。

1. 依赖包

在pom.xml下依赖相关包

<dependency>
           <groupId>cn.jpush.api</groupId>
           <artifactId>jpush-client</artifactId>
           <version>3.4.6</version>
       </dependency>
       <dependency>
           <groupId>cn.jpush.api</groupId>
           <artifactId>jiguang-common</artifactId>
           <version>1.1.8</version>
       </dependency>
       

2. 极光推送工具类

public class Jpushtils {
    //极光推送>>Android
    String appKey="";
    String masterSecret = "";

    //Map<String, String> parm是我自己传过来的参数,同学们可以自定义参数
    public  PushResult jpushAndroid(Map<String, String> parm,String userId,String title) {
        // 设置好账号的app_key和masterSecret
        //创建JPushClient(极光推送的实例)
         PushResult pu=null;
        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
        //推送的关键,构造一个payload
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.android())//指定android平台的用户
                .setAudience(Audience.alias(userId))//你项目中的所有用户
                .setNotification(Notification.android(parm.get("msg"), parm.get("title"), parm))
                //发送内容,这里不要盲目复制粘贴,这里是我从controller层中拿过来的参数)
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                //这里是指定开发环境,不用设置也没关系
                .setMessage(Message.content(parm.get("msg")))//自定义信息
                .build();

        try {
             pu = jpushClient.sendPush(payload);
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
        return pu;
    }
    //极光推送>>ios
    //Map<String, String> parm是我自己传过来的参数,同学们可以自定义参数
    public   PushResult jpushIOS(Map<String, String> parm,String userId) {
        // 设置好账号的app_key和masterSecret是必须的
        //创建JPushClient
         PushResult pu = null;
        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.ios())//ios平台的用户
                .setAudience(Audience.alias(userId))//用户
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder()
                                .setAlert(parm.get("msg"))
                                .setBadge(+1)
                                .setSound("happy")//这里是设置提示音(更多可以去官网看看)
                                .addExtras(parm)
                                .build())
                        .build())
                //ios正式上线请开启 true
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
                .build();

        try {
            pu = jpushClient.sendPush(payload);
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
        return pu;
    }
}

说明:其中appKey、masterSecret为开发平台所生成的参数。
//指定人员推送信息
setAudience(Audience.alias(userId))
注:在IOS应用正式上线前将开发环境设置为true,默认为false
.setOptions(Options.newBuilder().setApnsProduction(true).build())

3.实现类调用方法

MsgMainBean noticeMessages = JSON.parseObject(result, MsgMainBean.class);
        for (MsgMainBean.DataBean.RecordsBean  recordsBean : noticeMessages.getData().getRecords()) {
              if(recordsBean.getPushStatus()==0){
                  Jpushtils jpushtils = new Jpushtils();
                  Map<String, String> parm = new HashMap<String, String>();
                  parm.put("id", recordsBean.getId()+"");
                  //文章标题
                  parm.put("title", recordsBean.getMsgTypeName());
                  String title="推送测试";
                  //设置提示信息,内容是文章标题
                  parm.put("msg", recordsBean.getMsgContent());
                  PushResult jpushios = jpushtils.jpushIOS(parm,recordsBean.getUserId()+"");
                  PushResult jpushAndroid= jpushtils.jpushAndroid(parm,recordsBean.getUserId()+"",title);
                  if(jpushAndroid!=null||jpushios!=null){
                      iSafeCenterService.updateById(recordsBean.getId(),1);
                      System.out.println("推送成功*****");
                  }

              }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值