实体类:

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. linux 管道通信

    下面举linux下有名管道通信的代码. ----------------------------------------- fifo_read.c =========== #include<er ...

  2. securecrt 方向键乱码解决

    1 下载安装包rlwrap: rlwrap-0.30.tar.gz     http://utopia.knoware.nl/~hlub/uck/rlwrap/   2  install rlwrap ...

  3. 深度优先搜索DFS(一)

      实例一  0/1背包问题:   有n件物品,每件物品的重量为w[i],价值为c[i].现在需要选出若干件物品放入一个容量为V的背包中,使得在选入背包的物品重量和不超过容量V的前提下,让背包中的物品 ...

  4. web安全类

    web安全类主要分为两个部分:CSRF和XSS 一.CSRF 基本概念:CSRF,通常称为跨站请求伪造,英文名Cross-site request forgery 缩写为CSRF; 怎么防御 1.To ...

  5. php 操作mysql

    //由于前期数据库字段设计问题,没太注意,字段内容,后台python采集数据直接插入,没做处理,数据又不想丢掉,只能对网站数据库字段内容进行处理,100万条数据,调试了半天,很多思路都试过,各种坑,弄 ...

  6. C#将unix时间戳转换成.net的DateTime类型的代码

    下面的内容是关于C#将unix时间戳转换成.net的DateTime类型的内容. DateTime epoch = new DateTime(1970,1,1,0,0,0,0, DateTimeKin ...

  7. JDK中所包含的设计模式

    本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图.首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助. 一.设计模式是什么(1)反复出现问题的解决方案( ...

  8. Android开发 ViewConfiguration 用法

    ViewConfiguration 实例获取 ViewConfiguration viewConfiguration = ViewConfiguration.get(Context); 常用对象方法 ...

  9. [UnityShader基础]06.#pragma multi_compile

    参考链接: https://blog.csdn.net/qq826364410/article/details/81774741 https://docs.unity3d.com/Manual/SL- ...

  10. QTP测试.NET程序的时候,ComboBox下拉框控件选择后,运行时对象不可见解决方案

    解决方法: 录制时,选择下拉框数据的时候,不要鼠标单击选择,而是要用ENTER(回车键)来选择,才能完成选择,这样录制就OK了.