实体类:

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;
}
}

java百度云推送的更多相关文章

  1. 百度云推送的Java实现

    推送现在基本APP都有,项目中要通知和消息,所以综合考虑用了百度云推送 Java实现步骤: 1. 下载 http://push.baidu.com/sdk/push_server_sdk_for_ja ...

  2. Java端百度云推送消息Demo

    因为在做Java服务器有用到推送消息机制,于是到网上找了一下,就自己试着敲了一个demo.这个demo主要是简单的一个对app消息推送. jar:百度云消息推送Java端的jar. package x ...

  3. 百度云推送-服务端 C# SDK

    思路: 1.公司有项目需要做android和ios手机端推送消息的功能: 2.没有接触过这方面的知识,一头雾水,开始在网上一顿搜,网上倒是有不少解决方案,首先搜的是android的解决方案,因为ios ...

  4. App之百度云推送

    集成SDK 下载最新的Android SDK压缩包并解压,在新建工程或已有工程中增加百度云推送功能. 我下载的是 ,里面有一个同名的文件夹,文件夹中有 导入云推送jar包和so文件: 将解压后的lib ...

  5. Android 高仿微信实时聊天 基于百度云推送

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38799363 ,本文出自:[张鸿洋的博客] 一直在仿微信界面,今天终于有幸利用百 ...

  6. Android推送 百度云推送 入门篇

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27231237 现在app基本都有推送的功能,于是看了下百度云的推送,官方文档和D ...

  7. Android推送服务——百度云推送

    一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...

  8. 改写百度云推送SDK,PHP PEAR 包:Services_Baidu_Push

    iPhone使用apple push很方便,而Android很多厂商删除了google push,而且google在大陆连不上,所以要用别的办法. Android常见的推送服务商有:极光推送(http ...

  9. 使用【百度云推送】第三方SDK实现推送功能具体解释

    之前介绍过怎样使用shareSDK实现新浪微博分享功能,今天介绍怎样使用百度云推送SDK实现Android手机后台推送功能. 执行效果例如以下 第一步,假设使用百度的SDK,当然要先成为百度的开发人员 ...

随机推荐

  1. LeetCode——295. Find Median from Data Stream

    一.题目链接: https://leetcode.com/problems/find-median-from-data-stream 二.题目大意: 给定一段数据流,要求求出数据流中的中位数,其中数据 ...

  2. RTP协议

    RTP协议格式: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+ ...

  3. excle删除重复项的行,自定义删除第几个

    在B1输入 =COUNTIF(A$1:A1,A1) 下拉,会有数字1.2.1.2 第二步,选中B列升序排序,排序后,将B列为1的整行删除即可. 再补充下,这样是以姓名为条件来筛选,不会影响你的数据.你 ...

  4. js对象的创建

    一.通过对象直接量来创建 var emptyt={};  //相当于var empty=new Object; //如果属性名中包含空格.连字符(-).还有关键字,保留字时,要用字符串表示 var b ...

  5. JAVA的DES加密解密在windows上测试一切正常,在linux上异常

    windows上加解密正常,linux上加密正常,解密时发生 如下异常,异常信息如下: [ERROR] 2018-10-15 09:30:35,998 method:com.iscas.ippc.co ...

  6. qnx i2c 学习 二

    File still Updating.... many errors have been FOUND , need big change  qnx i2c structure  --written ...

  7. Mysql 分组选择

    Mysql 分组选择 在其他的数据库中我们遇到分组选择的问题时,比如在分组中计算前10名的平均分 我们可以使用row_number()over() 比较方便的得到. 但是在mysql中,问题就被抛了出 ...

  8. Linux内存解读

    1.free -m命令 [root@crawler ~]# free -m total used free shared buffers cached Mem: -/+ buffers/cache: ...

  9. 码云Gitee上新建项目教程

    1.在浏览器访问,https://gitee.com/: 2.使用用户名.密码登录: 3.在左下角显示当前用户的项目,点击“+”号,创建项目: 4.填写项目的相关信息,项目名称要和本地要上传的项目名称 ...

  10. hive动态分区问题--分区为中文

    报错如下: Loading data to table data_da.tmp_wlw_test partition (stat_date=2017-05-11, business_type_name ...