java中关于极光推送手机端的应用

调用代码
首先需要pom中需要引用的jar包

cn.jpush.api
jpush-client
3.2.17


cn.jpush.api
jiguang-common
1.0.3

密匙需要在极光推送系统中注册才可生成
application.properties
中添加极光推送中生成的密匙
#极光推送mastersecret
jpush_mastersecret=a185d3de3982cb74481a09ea
#极光推送appkey
jpush_appkey=4ea658c843ed21fc3432dd63

推送实现类
package com.netbox.nbplatform.subsystem.netbar.NoticePush.service;
import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.ServiceHelper;
import cn.jiguang.common.connection.NativeHttpClient;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.Notification;
import com.netbox.nbplatform.subsystem.netbar.NoticePush.entity.vo.JPushMsgVo;
import com.netbox.nbplatform.subsystem.netbar.NoticePush.entity.vo.NoticePushVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**

  • @Description: 推送消息

  • @Project: NoticePushServiceImpl

  • @Author: yanghui

  • @Date 2018-06-12 10:31
    */
    @Service
    @PropertySource(value = “application.properties”, ignoreResourceNotFound = true)
    public class NoticePushServiceImpl{

    @Value("${jpush_appkey}")
    private String APP_KEY;

    @Value("${jpush_mastersecret}")
    private String MASTER_SECRET;

    /**

    • TODO 遍历所有的用户列表和消息列表,并调用推送的方法推送消息数据
    • @date 2017-10-25
    • @return void
    • @param
    • @param

    /
    public void iteratorDataList(List noticePush) {
    // 获取用户名,并遍历待推送数据列表
    // 拼接待推送消息,然后调用推送的方法
    List msg=new ArrayList<>();
    if(noticePush!=null&&noticePush.size()>0) {
    for (NoticePushVo po : noticePush) {
    JPushMsgVo vo = new JPushMsgVo();
    vo.setUserName(po.getUserName());
    vo.setContent("" + po.getContent());
    msg.add(vo);
    }
    // 调用推送的方法
    jPushPersonalMsg(msg);
    }
    }
    /
    *

    • TODO (个人消息推送服务)

    • @date 2017-10-25

    • @return boolean 是否推送成功

    • @param msg
      */
      private boolean jPushPersonalMsg(List msg) {
      ClientConfig clientConfig = ClientConfig.getInstance();
      JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null,
      clientConfig);
      String authCode = ServiceHelper.getBasicAuthorization(APP_KEY,
      MASTER_SECRET);
      NativeHttpClient httpClient = new NativeHttpClient(authCode, null,
      clientConfig);
      jpushClient.getPushClient().setHttpClient(httpClient);

      try {
      // 拼接推送的数据
      PushPayload payload = buildPushObject_android_alias_alertWithTitle(msg);
      // 调用推送服务
      jpushClient.sendPush(payload);
      return true;
      } catch (APIConnectionException e) {
      // log.error(“极光推送–>个人消息推送:” + msg.getDepartmentID() + “用户推送报错”, e);
      } catch (APIRequestException e) {
      // log.error(“极光推送–>个人消息推送:” + msg.getDepartmentID() + “用户推送报错”, e);
      }
      return false;
      }
      /**

    • TODO 不同的平台消息推送

    • @date 2017-10-25

    • @return 设定文件 PushPayload 返回类型

    • @param msg
      */
      public PushPayload buildPushObject_android_alias_alertWithTitle(
      List msg) {
      List UserName=new ArrayList<>();
      List Content=new ArrayList<>();
      for(JPushMsgVo vo:msg){
      UserName.add(vo.getUserName());
      Content.add(vo.getContent());
      }
      return PushPayload.newBuilder()
      // 设置推送接收的平台为所有平台
      .setPlatform(Platform.all())
      // 设置推送的组为该地区的所有用户
      // .setAudience(Audience.tag(msg.getUserName() + “”))
      .setAudience(Audience.tag(UserName))
      // 设置推送的内容为数据表中的消息
      .setNotification(Notification.alert(Content)).build();

    }

}

用到的dto:
package com.netbox.nbplatform.subsystem.netbar.NoticePush.entity.dto;

/**

  • @Description:

  • @Project:

  • @Date – 10:45
    */
    public class NoticePushDto {
    private String StartTime;

    private String EndTime;

    private String SessionID;

    private String CreateTime;
    private Integer UserID;

    private String AreaCode;

    // 分页参数
    private Integer page;

    private Integer rows;

    private int startNum;

    private int offSet;

    public String getStartTime() {
    return StartTime;
    }

    public void setStartTime(String startTime) {
    StartTime = startTime;
    }

    public String getEndTime() {
    return EndTime;
    }

    public void setEndTime(String endTime) {
    EndTime = endTime;
    }

    public String getSessionID() {
    return SessionID;
    }

    public void setSessionID(String sessionID) {
    SessionID = sessionID;
    }

    public Integer getPage() {
    return page;
    }

    public void setPage(Integer page) {
    this.page = page;
    }

    public Integer getRows() {
    return rows;
    }

    public void setRows(Integer rows) {
    this.rows = rows;
    }

    public int getStartNum() {
    return startNum;
    }

    public void setStartNum(int startNum) {
    this.startNum = startNum;
    }

    public int getOffSet() {
    return offSet;
    }

    public void setOffSet(int offSet) {
    this.offSet = offSet;
    }

    public String getCreateTime() {
    return CreateTime;
    }

    public void setCreateTime(String createTime) {
    CreateTime = createTime;
    }

    public Integer getUserID() {
    return UserID;
    }

    public void setUserID(Integer userID) {
    UserID = userID;
    }

    public String getAreaCode() {
    return AreaCode;
    }

    public void setAreaCode(String areaCode) {
    AreaCode = areaCode;
    }

}

用到的vo:
package com.netbox.nbplatform.subsystem.netbar.NoticePush.entity.vo;

/**

  • @Description:

  • @Project:

  • @Date – 10:45
    /
    public class JPushMsgVo {
    /
    *

    • 用户名(用于个人推送消息)
      /
      private String userName;
      /
      *
    • 消息标题
      /
      private String title;
      /
      *
    • 消息内容
      /
      private String Content;
      /
      *
    • 消息类型 个人消息、系统消息
      */
      private int messageType;

    private Integer departmentID;
    /**

    • 备注
      /
      private String remark;
      /
      *
    • 最后更新时间
      */
      private String updateTime;

    public String getUserName() {
    return userName;
    }

    public void setUserName(String userName) {
    this.userName = userName;
    }

    public String getTitle() {
    return title;
    }

    public void setTitle(String title) {
    this.title = title;
    }

    public String getContent() {
    return Content;
    }

    public void setContent(String content) {
    Content = content;
    }

    public int getMessageType() {
    return messageType;
    }

    public void setMessageType(int messageType) {
    this.messageType = messageType;
    }

    public String getRemark() {
    return remark;
    }

    public void setRemark(String remark) {
    this.remark = remark;
    }

    public String getUpdateTime() {
    return updateTime;
    }

    public void setUpdateTime(String updateTime) {
    this.updateTime = updateTime;
    }

    public Integer getDepartmentID() {
    return departmentID;
    }

    public void setDepartmentID(Integer departmentID) {
    this.departmentID = departmentID;
    }

    @Override
    public String toString() {
    return “JPushMsgVo [userName=” + userName + “, title=” + title
    + “, Content=” + Content + “, messageType=” + messageType
    + “, departmentID=” + departmentID + “, remark=” + remark
    + “, updateTime=” + updateTime + “]”;
    }

}

package com.netbox.nbplatform.subsystem.netbar.NoticePush.entity.vo;

/**通知通告推送数据实体NoticePushVo

  • @describe

  • @date 2017-10-25
    */
    public class NoticePushVo {
    private String GUID;
    private String Title;
    private String KeyWord;
    private String Content;
    private String CreateTime;
    private String FlagName;
    private String UpdateTime;
    private String UpdateName;
    private String Remark;
    private Integer DepartmentID;
    private String AreaCode;
    private String UserName;

    private String AreaTypeCode;
    private String AreaName;
    private String ParentCode;
    private String Lon;
    private String Lat;

    public String getGUID() {
    return GUID;
    }
    public void setGUID(String gUID) {
    GUID = gUID;
    }
    public String getTitle() {
    return Title;
    }
    public void setTitle(String title) {
    Title = title;
    }
    public String getKeyWord() {
    return KeyWord;
    }
    public void setKeyWord(String keyWord) {
    KeyWord = keyWord;
    }
    public String getContent() {
    return Content;
    }
    public void setContent(String content) {
    Content = content;
    }
    public String getCreateTime() {
    return CreateTime;
    }
    public void setCreateTime(String createTime) {
    CreateTime = createTime;
    }
    public String getFlagName() {
    return FlagName;
    }
    public void setFlagName(String flagName) {
    FlagName = flagName;
    }
    public String getUpdateTime() {
    return UpdateTime;
    }
    public void setUpdateTime(String updateTime) {
    UpdateTime = updateTime;
    }
    public String getUpdateName() {
    return UpdateName;
    }
    public void setUpdateName(String updateName) {
    UpdateName = updateName;
    }
    public String getRemark() {
    return Remark;
    }
    public void setRemark(String remark) {
    Remark = remark;
    }
    public Integer getDepartmentID() {
    return DepartmentID;
    }
    public void setDepartmentID(Integer departmentID) {
    DepartmentID = departmentID;
    }
    public String getAreaCode() {
    return AreaCode;
    }
    public void setAreaCode(String areaCode) {
    AreaCode = areaCode;
    }
    public String getUserName() {
    return UserName;
    }
    public void setUserName(String userName) {
    UserName = userName;
    }
    public String getAreaTypeCode() {
    return AreaTypeCode;
    }
    public void setAreaTypeCode(String areaTypeCode) {
    AreaTypeCode = areaTypeCode;
    }
    public String getAreaName() {
    return AreaName;
    }
    public void setAreaName(String areaName) {
    AreaName = areaName;
    }
    public String getParentCode() {
    return ParentCode;
    }
    public void setParentCode(String parentCode) {
    ParentCode = parentCode;
    }
    public String getLon() {
    return Lon;
    }
    public void setLon(String lon) {
    Lon = lon;
    }
    public String getLat() {
    return Lat;
    }
    public void setLat(String lat) {
    Lat = lat;
    }

}

在需要引用的类中
@Autowired
private NoticePushServiceImpl noticePushServiceImpl;
引用

可推送多条
只需定义需要推送的内容和主题
//推送给业主消息
if(!netBarYearCheckDto.getApprovalStatus().equals(“380”)) {
NoticePushVo noticePush=new NoticePushVo();
String StatusFlagName="";
if(StatusFlag!=null&&StatusFlag.equals(“0”)){
StatusFlagName=“不通过”;
}else if(StatusFlag!=null&&StatusFlag.equals(“1”)){
StatusFlagName=“通过”;
}
String nameNotic="";
if(unitFlagName.getBindID()!=null&&!unitFlagName.getBindID().equals(“0”)){
nameNotic=userRoleAreaCodeUtils.getUserNameByUserID(unitFlagName.getBindID());
}else if (unitFlagName.getFlagName()!=null){
nameNotic=unitFlagName.getFlagName();
}else if (unitFlagName.getFlagName()==null&&unitFlagName.getUpdateName()!=null){
nameNotic=unitFlagName.getUpdateName();
}
noticePush.setUserName(nameNotic);
noticePush.setContent(netBarYearCheckDto.getUserName()
+mapApprovalStatusName.get(“ApprovalStatusName”).toString().replace(“待”,"")+StatusFlagName);
List noticePushs=new ArrayList<>();
noticePushs.add(noticePush);
noticePushServiceImpl.iteratorDataList(noticePushs);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值