实体类:

import java.io.Serializable;
import javax.persistence.Entity; /**
*
* @Version : 1.0
* @Author : li_hao
* @Description : Android的消息体
* @Date : 2017年11月9日 下午4:26:45
*/
@Entity
public class AndroidMessage implements Serializable{ private static final long serialVersionUID = -4962099586824544583L;
private String title;
private String description;
private String notification_builder_id;
private String notification_basic_style;
private String open_type;
private String url;
private String pkg_content;
/** "custom_content":{"key":"value"};jsonobject转String*/
private String custom_content; public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getNotification_builder_id() {
return notification_builder_id;
}
public void setNotification_builder_id(String notification_builder_id) {
this.notification_builder_id = notification_builder_id;
}
public String getNotification_basic_style() {
return notification_basic_style;
}
public void setNotification_basic_style(String notification_basic_style) {
this.notification_basic_style = notification_basic_style;
}
public String getOpen_type() {
return open_type;
}
public void setOpen_type(String open_type) {
this.open_type = open_type;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getPkg_content() {
return pkg_content;
}
public void setPkg_content(String pkg_content) {
this.pkg_content = pkg_content;
}
public String getCustom_content() {
return custom_content;
}
public void setCustom_content(String custom_content) {
this.custom_content = custom_content;
}
@Override
public String toString() {
return "AndroidMessage [title=" + title + ", description="
+ description + ", notification_builder_id="
+ notification_builder_id + ", notification_basic_style="
+ notification_basic_style + ", open_type=" + open_type
+ ", url=" + url + ", pkg_content=" + pkg_content
+ ", custom_content=" + custom_content + "]";
}
}
import java.io.Serializable;
import javax.persistence.Entity; /**
*
* @Version : 1.0
* @Author : li_hao
* @Description : IOS的消息体APS部分
* @Date : 2017年11月9日 下午4:26:45
*/
@Entity
public class IOSMessageAps implements Serializable{ private static final long serialVersionUID = -1266567518675955286L; private String alert; private String sound; private Integer badge; public String getAlert() {
return alert;
} public void setAlert(String alert) {
this.alert = alert;
} public String getSound() {
return sound;
} public void setSound(String sound) {
this.sound = sound;
} public Integer getBadge() {
return badge;
} public void setBadge(Integer badge) {
this.badge = badge;
} @Override
public String toString() {
return "IOSMessageAps [alert=" + alert + ", sound=" + sound
+ ", badge=" + badge + "]";
}
}
import java.io.Serializable;
import javax.persistence.Entity; /**
*
* @Version : 1.0
* @Author : li_hao
* @Description : IOS消息体
* @Date : 2017年11月9日 下午4:26:24
*/
@Entity
public class IOSMessage implements Serializable{ private static final long serialVersionUID = -1919005824363589473L; private IOSMessageAps aps; private String key1; private String key2; public IOSMessageAps getAps() {
return aps;
} public void setAps(IOSMessageAps aps) {
this.aps = aps;
} public String getKey1() {
return key1;
} public void setKey1(String key1) {
this.key1 = key1;
} public String getKey2() {
return key2;
} public void setKey2(String key2) {
this.key2 = key2;
} @Override
public String toString() {
return "IOSMessage [aps=" + aps + ", key1=" + key1 + ", key2=" + key2
+ "]";
}
}
import java.io.Serializable;
import javax.persistence.Entity; /**
*
* @Version : 1.0
* @Author : li_hao
* @Description : 消息推送注册信息
* @Date : 2017年11月9日 下午4:27:00
*/
@Entity
public class Notification implements Serializable{ private static final long serialVersionUID = 3977093167924038038L; /**
* 必须为客户端初始化成功之后返回的channelId,默认null。 唯一对应一台设备
*/
private String channelId; /**
* 设置消息的有效时间,单位秒,默认3600*5.
*/
private Integer msgExpires; /**
* 消息类型:0:透传消息 1:通知 默认值为0
*/
private Integer messageType; /**
* 仅IOS应用推送时使用,默认值为null,取值如下:1:开发状态 2:生产状态
*/
private Integer deployStatus; /**
* 类别主题:指定的topic变量. 长度限制 1 – 128字节,由数字,字母和下划线组成。
*/
private String topicId; /**
* 设备类型:1 for web, 2 for pc, 3 for android, 4 for ios, 5 for wp.
*/
private Integer deviceType; /**
* 设置定时推送时间,必需超过当前时间一分钟,单位秒.
*/
private Long sendTime; public String getChannelId() {
return channelId;
} public void setChannelId(String channelId) {
this.channelId = channelId;
} public Integer getMsgExpires() {
return msgExpires;
} public void setMsgExpires(Integer msgExpires) {
this.msgExpires = msgExpires;
} public Integer getMessageType() {
return messageType;
} public void setMessageType(Integer messageType) {
this.messageType = messageType;
} public Integer getDeployStatus() {
return deployStatus;
} public void setDeployStatus(Integer deployStatus) {
this.deployStatus = deployStatus;
} public String getTopicId() {
return topicId;
} public void setTopicId(String topicId) {
this.topicId = topicId;
} public Integer getDeviceType() {
return deviceType;
} public void setDeviceType(Integer deviceType) {
this.deviceType = deviceType;
} public Long getSendTime() {
return sendTime;
} public void setSendTime(Long sendTime) {
this.sendTime = sendTime;
} @Override
public String toString() {
return "Notification [channelId=" + channelId + ", msgExpires="
+ msgExpires + ", messageType=" + messageType
+ ", deployStatus=" + deployStatus + ", topicId=" + topicId
+ ", deviceType=" + deviceType + ", sendTime=" + sendTime + "]";
}
}
import java.io.Serializable;
import javax.persistence.Entity; /**
*
* @Version : 1.0
* @Author : li_hao
* @Description : 需要发送的消息体
* @Date : 2017年11月9日 下午4:26:45
*/
@Entity
public class SendMessage implements Serializable{ private static final long serialVersionUID = 5964317197661586233L; private AndroidMessage androidMessage;
private IOSMessage iosMessage; public AndroidMessage getAndroidMessage() {
return androidMessage;
}
public void setAndroidMessage(AndroidMessage androidMessage) {
this.androidMessage = androidMessage;
}
public IOSMessage getIosMessage() {
return iosMessage;
}
public void setIosMessage(IOSMessage iosMessage) {
this.iosMessage = iosMessage;
}
@Override
public String toString() {
return "SendMessage [androidMessage=" + androidMessage
+ ", iosMessage=" + iosMessage + "]";
}
}

百度推送:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baidu.yun.core.log.YunLogEvent;
import com.baidu.yun.core.log.YunLogHandler;
import com.baidu.yun.push.auth.PushKeyPair;
import com.baidu.yun.push.client.BaiduPushClient;
import com.baidu.yun.push.constants.BaiduPushConstants;
import com.baidu.yun.push.exception.PushClientException;
import com.baidu.yun.push.exception.PushServerException;
import com.baidu.yun.push.model.PushMsgToSingleDeviceRequest;
import com.baidu.yun.push.model.PushMsgToSingleDeviceResponse;
import com.centit.server.webmgr.baidupush.po.AndroidMessage;
import com.centit.server.webmgr.baidupush.po.IOSMessage;
import com.centit.server.webmgr.baidupush.po.IOSMessageAps;
import com.centit.server.webmgr.baidupush.po.Notification;
import com.centit.server.webmgr.baidupush.po.SendMessage;import com.centit.server.webmgr.common.DingTalkProperties; /**
*
* @Version : 1.0
* @Author : li_hao
* @Description : 百度推送
* @Date : 2017年11月9日 下午4:22:04
*/ public class NotificationPusher { public static final Log log = LogFactory.getLog(NotificationPusher.class); /**
* 推送消息到单个设备
*/
public static String pushNotificationToSingleDevice(SendMessage sendMessage, Notification notification) throws PushClientException, PushServerException {
Integer deviceType = notification.getDeviceType(); String apiKey = null;
String secretKey = null;
if(deviceType == 3){
apiKey = "你的android_api_key";
secretKey = "你的android_secret_key";
}else if(deviceType == 4){
apiKey = "你的ios_api_key";
secretKey = "你的ios_secret_key";
} PushKeyPair pair = new PushKeyPair(apiKey, secretKey);
BaiduPushClient pushClient = new BaiduPushClient(pair, BaiduPushConstants.CHANNEL_REST_URL); pushClient.setChannelLogHandler(new YunLogHandler() {
@Override
public void onHandle(YunLogEvent event) {
log.info(String.format("推送回调日志:%s", event.getMessage()));
}
}); try {
PushMsgToSingleDeviceRequest request = new PushMsgToSingleDeviceRequest(); String message = null;
if(deviceType == 3){
message = JSON.toJSONString(sendMessage.getAndroidMessage());
}else if(deviceType == 4){
message = JSON.toJSONString(sendMessage.getIosMessage()); request.addDeployStatus(notification.getDeployStatus()); // IOS的部署状态:Developer,2:Production.
} request.addChannelId(notification.getChannelId());
request.addMsgExpires(notification.getMsgExpires()); // 设置message的有效时间
request.addMessageType(notification.getMessageType());// 消息类型:1:通知,0:透传消息.默认为0注:IOS只有通知.
request.addDeviceType(deviceType); // 设备类型:3:android,4:ios JSONObject jsonMessage = JSONObject.parseObject(message);
request.addMessage(jsonMessage.toString()); // 发起请求
PushMsgToSingleDeviceResponse response = pushClient.pushMsgToSingleDevice(request);
// 请求结果解析
log.info(String.format("推送成功信息:msgId=%s,sendTime=", response.getMsgId(), response.getSendTime()));
return response.getMsgId();
} catch (PushClientException e) {
// ERROROPTTYPE 用于设置异常的处理方式 -- 抛出异常和捕获异常,'true' 表示抛出, 'false' 表示捕获。
if (BaiduPushConstants.ERROROPTTYPE) {
throw e;
} else {
log.error(String.format("推送客户端异常:%s" ,e.getMessage()));
}
} catch (PushServerException e) {
if (BaiduPushConstants.ERROROPTTYPE) {
throw e;
} else {
log.error(String.format("推送服务端异常:requestId: %d, errorCode: %d, errorMessage: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
}
}
return null;
}
}

最新文章

  1. ASP.NET MVC开发中常见异常及解决方案
  2. 表连接,如何先筛选再 join
  3. css3 -- 2D变换
  4. famous javascript library.
  5. gcc 生成动态库时-fpic选项是什么意思。
  6. Memcached报错
  7. cocos2dx 3.0 它 使用std::bind更换CC_CALLBACK_N
  8. Strategic Game HDU
  9. openstack私有云布署实践【1 网络拓扑说明】
  10. OC-不可变数组NSArray
  11. BZOJ_[JSOI2010]Group 部落划分 Group_kruskal
  12. EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public?
  13. js中uuid不被识别
  14. Saliency Detection: A Spectral Residual Approach
  15. 《Linux就该这么学》今天开课了-Linux的发展,起源
  16. SQL Server 最大并行度
  17. 重识linux-关于selinux
  18. 转 Spring Boot之No session repository could be auto-configured, check your configuration问题解决
  19. swift3.0:CoreData的使用
  20. sudo开发常用命令总结

热门文章

  1. Java Swing 界面中文乱码问题解决(Idea环境)
  2. JavaBean找到项目下的文件这里是\WEB-INF\classes\下面的属性文件
  3. InfluxDB安装和简介
  4. Skyline TerraExplorer -二次开发- 加载外部数据的各种连接串
  5. MyPubMedID
  6. mysql 多实例安装
  7. 修改select默认小箭头
  8. [UNITY 5.4 UGUI] 模态对话框
  9. python远程连接windows
  10. 打包发布到Tomcat