zoukankan      html  css  js  c++  java
  • java百度云推送

    实体类:

    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;
        }
    }
  • 相关阅读:
    Objective-c Category(类别)
    协议(porotocol)
    类的通用格式
    objective-c 强大的布尔类型
    C 语言函数指针
    c while 循环
    jQuery的deferred对象详解
    exploring the http Object
    div+css定位position详解
    如何给变量取个简短且无歧义的名字
  • 原文地址:https://www.cnblogs.com/hooly/p/8087315.html
Copyright © 2011-2022 走看看