百度推送工具类 package org.pro.baidu.push; 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.AddDevicesToTagRequest; import com.baidu.yun.push.model.AddDevicesToTagResponse; import com.baidu.yun.push.model.CreateTagRequest; import com.baidu.yun.push.model.CreateTagResponse; import com.baidu.yun.push.model.DeleteDevicesFromTagRequest; import com.baidu.yun.push.model.DeleteDevicesFromTagResponse; import com.baidu.yun.push.model.DeleteTagRequest; import com.baidu.yun.push.model.DeleteTagResponse; import com.baidu.yun.push.model.PushMsgToSingleDeviceRequest; import com.baidu.yun.push.model.PushMsgToSingleDeviceResponse; import com.baidu.yun.push.model.PushMsgToTagRequest; import com.baidu.yun.push.model.PushMsgToTagResponse; /** * explain: Baidu Push Class * translate: 百度推送工具类 * @author Muci 伤寒 * Copyright (C), ORG伤寒 * qq:1877378299 * mail:admin@baozoubook.com * tel:18616220047 */ public class BaiduPush { private static final String APIKEY = "xxxxxxxxxxxxxxxxxxxx"; private static final String SECRETKEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"; /** * explain: InitBaiDu Push Client * translate: 初始化百度推送服务对象 * @param yunLogHandler 日志处理对象 * @return 百度推送服务对象 */ private BaiduPushClient initBaiduPushClient(YunLogHandler yunLogHandler) { PushKeyPair pair = new PushKeyPair(APIKEY, SECRETKEY); BaiduPushClient pushClient = new BaiduPushClient(pair, BaiduPushConstants.CHANNEL_REST_URL); pushClient.setChannelLogHandler(yunLogHandler); return pushClient; } /** * explain:Push Message to TagName * translate: 对对应标签推送消息 * @param yunLogHandler 日志处理对象 * @param tagName 标签 * @param deployStatus 仅IOS应用推送时使用,默认值为0,取值如下:1:开发状态 2:生产状态 * @param msgExpires 相对于当前时间的消息过期时间,单位为秒 * @param messageType 消息类型 取值如下:0:透传消息 1:通知 默认值为0 * @param deviceType 设备类型 3:Android,4:IOS * @param message 消息内容 JSON格式字符串 * @return PushMsgToTagResponse 推送消息到标签响应对象 * @throws PushClientException 推送消息客户端异常对象 * @throws PushServerException 推送消息服务端异常对象 */ public PushMsgToTagResponse PushMsgToTag(YunLogHandler yunLogHandler,String tagName,int deployStatus,int msgExpires,int messageType,int deviceType,String message) throws PushClientException, PushServerException { if(null==tagName||"".equals(tagName)){ throw new NullPointerException("TagName is Null"); } //初始化 IOS推送状态 默认为0 为0则不设置 int deployStatusIn = 0; //修改初始化IOS推送状态为传递参数 deployStatusIn = deployStatus; //创建消息推送到标签请求对象 PushMsgToTagRequest request = new PushMsgToTagRequest(); //判断TagName是否为空,如果为空则抛出空指针异常 TagName is Null request.addTagName(tagName); //判断IOS推送状态 如果不为0则传入到请求对象中设置推送状态 if(deployStatusIn!=0){ request.addDeployStatus(deployStatus); } //将消息过期时间设置到请求对象 request.addMsgExpires(new Integer(msgExpires)); //将消息类型设置到请求对象 request.addMessageType(messageType); //将消息设置到请求对象 request.addMessage(message); //将器械类型设置到请求对象 request.addDeviceType(deviceType); //初始化百度推送服务对象 BaiduPushClient pushClient = initBaiduPushClient(yunLogHandler); //通过推送客户端将消息推送出去返回推送消息到标签响应对象 PushMsgToTagResponse response = pushClient.pushMsgToTag(request); //返回响应对象 return response; } /** * explain:Push Message to ChannelId * translate: 根据ChannelId进行消息推送处理 * @param yunLogHandler 日志处理对象 * @param channelId 每一个设备对应的ChannelId * @param deployStatus 仅IOS应用推送时使用,默认值为0,取值如下:1:开发状态 2:生产状态 * @param msgExpires 相对于当前时间的消息过期时间,单位为秒 * @param messageType 消息类型 取值如下:0:透传消息 1:通知 默认值为0 * @param deviceType 设备类型 3:Android,4:IOS * @param message 消息内容 JSON格式字符串 * @return PushMsgToSingleDeviceResponse 推送消息到知道ChannelId响应对象 * @throws PushClientException 推送消息客户端异常对象 * @throws PushServerException 推送消息服务端异常对象 */ public PushMsgToSingleDeviceResponse PushMsgToChannelId(YunLogHandler yunLogHandler,String channelId,int deployStatus,int msgExpires,int messageType,int deviceType,String message) throws PushClientException, PushServerException{ //判断传入参数channelId是否为空,如果为空的话则抛出空指针异常 channelId is Null if(null == channelId||"".equals(channelId)){ throw new NullPointerException("channelId is Null"); } //初始化 IOS推送状态 默认为0 为0则不设置 int deployStatusIn = 0; //修改初始化IOS推送状态为传递参数 deployStatusIn = deployStatus; //创建推送消息到单个设备请求对象 PushMsgToSingleDeviceRequest pushMsgToSingleDeviceRequest = new PushMsgToSingleDeviceRequest(); //判断IOS推送状态 如果不为0则传入到请求对象中设置推送状态 if(deployStatusIn!=0){ pushMsgToSingleDeviceRequest.addDeployStatus(deployStatus); } //装载ChannelId到请求对象 pushMsgToSingleDeviceRequest.addChannelId(channelId); //装载到期时间单请求对象 pushMsgToSingleDeviceRequest.addMsgExpires(new Integer(msgExpires)); //装载消息类型到请求对象 pushMsgToSingleDeviceRequest.addMessageType(messageType); //装载设置设备类型到请求对象 pushMsgToSingleDeviceRequest.addDeviceType(deviceType); //装载消息到请求对象 pushMsgToSingleDeviceRequest.addMessage(message); //初始化百度推送服务对象 BaiduPushClient baiduPushClient = initBaiduPushClient(yunLogHandler); //通过推送客户端将消息推送出去返回推送消息到标签响应对象 PushMsgToSingleDeviceResponse pushMsgToSingleDeviceResponse = baiduPushClient.pushMsgToSingleDevice(pushMsgToSingleDeviceRequest); //返回响应对象 return pushMsgToSingleDeviceResponse; } /** * explain: add ChannelIds to TagName * translate: 添加ChannelIds到标签 * @param yunLogHandler 日志处理对象 * @param channelIds 设备的ChannelId数组 * @param tagName 标签名 * @param deviceType 设备类型 3为android 4为ios 其他则不进行设定 * @return AddDevicesToTagResponse 添加设备到标签响应对象 * @throws PushClientException 推送消息客户端异常对象 * @throws PushServerException 推送消息服务端异常对象 */ public AddDevicesToTagResponse AddChannelIdsToTag(YunLogHandler yunLogHandler,String [] channelIds,String tagName,int deviceType) throws PushClientException, PushServerException{ //判断ChannelIds长度如果没有内容则抛出空指针异常 if(channelIds.length<=0){ throw new NullPointerException("channelIds is Null"); } //判断TagName内容如果为空则抛出空指针异常 if (null==tagName||"".equals(tagName)) { throw new NullPointerException("tagName is Null"); } //创建添加设备到Tag请求对象 AddDevicesToTagRequest addDevicesToTagRequest = new AddDevicesToTagRequest(); //装载标签到添加设备到Tag请求对象 addDevicesToTagRequest.addTagName(tagName); //装载channelIds到添加设备到Tag请求对象 addDevicesToTagRequest.addChannelIds(channelIds); //判断设备类型为3或4的情况进行装载设备类型到添加设备到Tag请求对象 if(deviceType==3||deviceType==4){ addDevicesToTagRequest.addDeviceType(new Integer(deviceType)); } //初始化百度推送服务对象 BaiduPushClient baiduPushClient = initBaiduPushClient(yunLogHandler); //通过推送客户端将添加设备到标签请求进行执行返回添加设备到标签响应对象 AddDevicesToTagResponse addDevicesToTagResponse = baiduPushClient.addDevicesToTag(addDevicesToTagRequest); //返回添加设备到标签响应对象 return addDevicesToTagResponse; } /** * explain: create TagName * translate: 创建标签 * @param yunLogHandler 日志处理对象 * @param tagName 标签名称 * @param deviceType 设备类型 3为Android 4为IOS 其他为不设置 * @return CreateTagResponse 创建标签响应对象 * @throws PushClientException 推送消息客户端异常对象 * @throws PushServerException 推送消息服务端异常对象 */ public CreateTagResponse CreateTag(YunLogHandler yunLogHandler,String tagName,int deviceType) throws PushClientException, PushServerException{ //判断标签名称如果为空则抛出空指针异常 if(null==tagName || "".equals(tagName)){ throw new NullPointerException("tagName is Null"); } //创建创建标签请求对象 CreateTagRequest request = new CreateTagRequest(); //装载标签名称到创建标签请求对象 request.addTagName(tagName); //判断设备类型为3Android 或4IOS 如果不是则不进行设置 if(deviceType==3||deviceType==4){ request.addDeviceType(new Integer(deviceType)); } //初始化百度推送服务对象 BaiduPushClient baiduPushClient = initBaiduPushClient(yunLogHandler); //通过百度推送服务对象将创建标签请求通过推送发送获取创建标签响应对象 CreateTagResponse createTagResponse = baiduPushClient.createTag(request); //返回创建标签响应对象 return createTagResponse; } /** * explain: Delete ChannelId from tagName * translate: 从标签中删除对应设备 * @param yunLogHandler 日志处理对象 * @param tagName 标签名称 * @param channelIds 设备的ChannelId数组 * @param deviceType 设备类型 3为Android 4为IOS 其他为不设置 * @return DeleteDevicesFromTagResponse 标签删除指定设备响应对象 * @throws PushClientException 推送消息客户端异常对象 * @throws PushServerException 推送消息服务端异常对象 */ public DeleteDevicesFromTagResponse DeleteChannelsIdFromTag(YunLogHandler yunLogHandler,String tagName,String [] channelIds,int deviceType) throws PushClientException, PushServerException{ //判断标签名称如果为空则抛出空指针异常 if(null==tagName || "".equals(tagName)){ throw new NullPointerException("tagName is Null"); } //判断ChannelIds长度如果没有内容则抛出空指针异常 if(channelIds.length<=0){ throw new NullPointerException("channelIds is Null"); } //创建从标签删除设备请求对象 DeleteDevicesFromTagRequest deleteDevicesFromTagRequest = new DeleteDevicesFromTagRequest(); //装载标签名称到标签删除指定设备请求对象 deleteDevicesFromTagRequest.addTagName(tagName); //装载设备Id数组到标签删除知道设备请求对象 deleteDevicesFromTagRequest.addChannelIds(channelIds); //判断设备类型为3Android 或4IOS 如果不是则不进行设置 if(deviceType==3||deviceType==4){ deleteDevicesFromTagRequest.addDeviceType(new Integer(deviceType)); } //初始化百度推送服务对象 BaiduPushClient baiduPushClient = initBaiduPushClient(yunLogHandler); //通过百度推送服务对象调用从标签删除知道设备方法返回从标签删除指定设备响应对象 DeleteDevicesFromTagResponse deleteDevicesFromTagResponse = baiduPushClient.deleteDevicesFromTag(deleteDevicesFromTagRequest); //返回标签删除指定设备响应对象 return deleteDevicesFromTagResponse; } /** * explain: delete tagName * translate: 删除标签 * @param yunLogHandler 日志处理对象 * @param tagName 标签名 * @param deviceType 设备类型 3为Android 4为IOS 其他则不进行设置 * @return DeleteTagResponse 删除标签响应对象 * @throws PushClientException 推送消息客户端异常对象 * @throws PushServerException 推送消息服务端异常对象 */ public DeleteTagResponse DeleteTag(YunLogHandler yunLogHandler,String tagName,int deviceType) throws PushClientException, PushServerException{ //判断标签名称如果为空则抛出空指针异常 if(null==tagName||"".equals(tagName)){ throw new NullPointerException("tagName is Null"); } //创建删除标签请求对象 DeleteTagRequest deleteTagRequest = new DeleteTagRequest(); //装载标签名称 deleteTagRequest.addTagName(tagName); //判断设备类型为3Android 或4IOS 如果不是则不进行设置 if(deviceType==3||deviceType==4){ deleteTagRequest.addDeviceType(new Integer(deviceType)); } //初始化百度推送服务对象 BaiduPushClient baiduPushClient = initBaiduPushClient(yunLogHandler); //通过百度推送服务对象调用删除标签请求返回删除标签响应对象 DeleteTagResponse deleteTagResponse = baiduPushClient.deleteTag(deleteTagRequest); //删除标签响应对象 return deleteTagResponse; } //IOS的JSON格式 {\"aps\": {\"alert\":\"测试成功\",\"badge\":0},\"key1\":\"value1\",\"key2\":\"value2\"} //Android的JSON格式 {\"title\":\"这是一个测试\",\"description\":\"测试哦测试啊测试恩\"} }
测试百度推送工具类 package org.pro.baidu.test; import java.util.List; import org.pro.baidu.push.BaiduPush; import com.baidu.yun.core.log.YunLogEvent; import com.baidu.yun.core.log.YunLogHandler; import com.baidu.yun.push.exception.PushClientException; import com.baidu.yun.push.exception.PushServerException; import com.baidu.yun.push.model.AddDevicesToTagResponse; import com.baidu.yun.push.model.CreateTagResponse; import com.baidu.yun.push.model.DeleteDevicesFromTagResponse; import com.baidu.yun.push.model.DeleteTagResponse; import com.baidu.yun.push.model.DeviceInfo; import com.baidu.yun.push.model.PushMsgToSingleDeviceResponse; import com.baidu.yun.push.model.PushMsgToTagResponse; public class TestBaiduPush { private YunLogHandler yunLogHandler = new YunLogHandler() { public void onHandle(YunLogEvent arg0) { System.out.println(arg0.getMessage()); } }; private BaiduPush baiduPush = new BaiduPush(); /** * 测试创建标签的方法 */ public void testCreateTag() { try { CreateTagResponse createTagResponse = baiduPush.CreateTag( yunLogHandler, "MyTest", 3); System.out.println(String.format("tagName: %s, result: %d", createTagResponse.getTagName(), createTagResponse.getResult())); } catch (PushClientException e) { e.printStackTrace(); } catch (PushServerException e) { System.out.println(String.format( "requestId: %d, errorCode: %d, errorMsg: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg())); } } /** * 测试将设备添加到标签的方法 */ public void testAddChnnelIdToTag(){ String [] channelIds = {"4293667056080933767"}; try { AddDevicesToTagResponse response = baiduPush.AddChannelIdsToTag(yunLogHandler,channelIds, "join", 3); if(null!=response){ StringBuilder strBuilder = new StringBuilder(); strBuilder.append("devicesInTag:{"); List<?> devicesInfo = response.getDevicesInfoAfterAdded(); for (int i = 0; i < devicesInfo.size(); i++) { Object object = devicesInfo.get(i); if (i != 0) { strBuilder.append(","); } if (object instanceof DeviceInfo) { DeviceInfo deviceInfo = (DeviceInfo) object; strBuilder.append("{channelId:" + deviceInfo.getChannelId() + ",result:" + deviceInfo.getResult() + "}"); } } strBuilder.append("}"); System.out.println(strBuilder.toString()); } } catch (PushClientException e) { e.printStackTrace(); } catch (PushServerException e) { System.out.println(String.format( "requestId: %d, errorCode: %d, errorMsg: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg())); } } /** * 测试向标签推送消息的方法 */ public void testPushMsgToTag(){ try { PushMsgToTagResponse msgToTagResponse = baiduPush.PushMsgToTag(yunLogHandler, "MyTest", 0, 3600, 1, 3, "{\"title\":\"测试向标签推送消息的方法\",\"description\":\"测试向标签推送消息的方法\"}"); System.out.println("msgId: " + msgToTagResponse.getMsgId() + ",sendTime: " + msgToTagResponse.getSendTime() + ",timerId: " + msgToTagResponse.getTimerId()); } catch (PushClientException e) { e.printStackTrace(); } catch (PushServerException e) { System.out.println(String.format( "requestId: %d, errorCode: %d, errorMsg: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg())); } } /** * 测试向设备推送消息的方法 */ public void testPushMsgToChannelId(){ try { PushMsgToSingleDeviceResponse response = baiduPush.PushMsgToChannelId(yunLogHandler, "4293667056080933767", 0, 3600, 1, 3, "{\"title\":\"测试向设备推送消息的方法\",\"description\":\"测试向设备推送消息的方法\"}"); System.out.println("msgId: " + response.getMsgId() + ",sendTime: " + response.getSendTime()); } catch (PushClientException e) { e.printStackTrace(); } catch (PushServerException e) { System.out.println(String.format( "requestId: %d, errorCode: %d, errorMsg: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg())); } } /** * 测试从标签中删除设备的方法 */ public void testDeleteChannelsIdFromTag(){ String [] channelIds = {"4293667056080933767"}; try { DeleteDevicesFromTagResponse response = baiduPush.DeleteChannelsIdFromTag(yunLogHandler, "join", channelIds, 3); if (null != response) { StringBuilder strBuilder = new StringBuilder(); strBuilder.append("devicesInfoAfterDel:{"); List<?> list = response.getDevicesInfoAfterDel(); for (int i = 0; i < list.size(); i++) { if (i != 0) { strBuilder.append(","); } Object object = list.get(i); if (object instanceof DeviceInfo) { DeviceInfo deviceInfo = (DeviceInfo) object; strBuilder.append("{channelId: " + deviceInfo.getChannelId() + ", result: " + deviceInfo.getResult() + "}"); } } strBuilder.append("}"); System.out.println(strBuilder.toString()); } } catch (PushClientException e) { e.printStackTrace(); } catch (PushServerException e) { System.out.println(String.format( "requestId: %d, errorCode: %d, errorMsg: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg())); } } /** * 测试删除标签 */ public void testDeleteTag(){ try { DeleteTagResponse deleteTagResponse = baiduPush.DeleteTag(yunLogHandler, "MyTest", 3); System.out.println(String.format("tagName: %s, result: %d", deleteTagResponse.getTagName(), deleteTagResponse.getResult())); } catch (PushClientException e) { e.printStackTrace(); } catch (PushServerException e) { System.out.println(String.format( "requestId: %d, errorCode: %d, errorMsg: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg())); } } public static void main(String[] args) { //TestBaiduPush testBaiduPush = new TestBaiduPush(); //testBaiduPush.testCreateTag();//创建一个MyTest标签 //testBaiduPush.testAddChnnelIdToTag();//将设备添加到标签中 //testBaiduPush.testPushMsgToTag();//对标签发送消息 //testBaiduPush.testPushMsgToChannelId();//对设备发送消息 //testBaiduPush.testDeleteChannelsIdFromTag();//删除设备 //testBaiduPush.testDeleteTag();//将标签删除的方法 } }
版权所有:伤寒
联系电话:18616220047
联系邮箱:1877378299@qq.com
联系QQ:1877378299
联系QQ群:248148860
转载请注明出处: http://user.qzone.qq.com/1877378299/2
所需要导入的Jar包可以问作者要,本文档参考百度推送接口API javasdk_3.0.1,如有问题请联系作者