調用代碼
首先需要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;
@Service
@PropertySource(value = “application.properties”, ignoreResourceNotFound = true)
public class NoticePushServiceImpl{
@Value("${jpush_appkey}")
private String APP_KEY;
@Value("${jpush_mastersecret}")
private String MASTER_SECRET;
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;
}
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;
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;
private int messageType;
private Integer departmentID;
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;
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);
}