调用代码
首先需要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&¬icePush.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);
}