实体类:

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. Stripes视图框架实现纯Java代码控制表现层参考文档

    https://blog.csdn.net/boonya/article/details/14101477 Stripes是一个开放源码的Web应用程序框架的基础上的模型 - 视图 - 控制器(MVC ...

  2. TCP/IP学习20180710-数据链路层-ICMP协议

    1.ICMP协议IP协议不保证数据送达.则应有协议保证数据送达.ICMP就是其中的重要协议.ICMP:(Internet Control Messages Protocol)因特网信报控制协议当传送I ...

  3. C/C++程序中内存被非法改写的一个检测方法

    本文所讨论的“内存”主要指(静态)数据区.堆区和栈区空间(详细的布局和描述参考<Linux虚拟地址空间布局>一文).数据区内存在程序编译时分配,该内存的生存期为程序的整个运行期间,如全局变 ...

  4. python selenium 爬取淘宝

    # -*- coding:utf-8 -*- # author : yesehngbao # time:2018/3/29 import re import pymongo from lxml imp ...

  5. go语言学习--string、int、int64互相转换,字符串的截取,数组和字符串的转换

    下面总结了go中常用的转换 #string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt ...

  6. 卸载npm

    npm uninstall npm -g yum remove nodejs npm -y

  7. rabbit原理及项目应用

    1.rabbitMQ是什么? mq是由erlang语言开发的开源的amqp的实现. 2.rabbitMQ的基本原理是什么? 使用RabbitMQ,首先需要与rabbitMQ的visiu host建立连 ...

  8. 学习笔记——Ubuntu下使用Docker包部署禅道任务管理系统

    写此文目的:利用搭建禅道环境联系Docker基本使用方法,加深对Docker容器的理解,Ubuntu下面才能原生运行Docker,因此选择了Ubuntu 1.下载禅道开源版 wget http://d ...

  9. c#+cad2010+MQ接收消息

    cad2015+版本可以使用TrayItem气泡显示消息 static TrayItem trayItem = new TrayItem(); public static void testtrayi ...

  10. RN-进阶

    ActivityIndicator 显示一个圆形的loading的提示符 react-native-tab-navigator npm install react-native-tab-navigat ...