Java工程服务端实现给客户端推送消息

最近给目前作的项目添加了一个新的功能,给客户端推送消息 java

我用的是百度作的云推送,具体介绍请参考:http://developer.baidu.com/ android

贴上我稍微改造了一下的服务器端推送工具类 ios

/**
	 * android单播
	 * @param messageCenter
	 * @param userBean
	 * @return
	 */
	public static boolean singleAndroidPush(MessageCenter messageCenter,UserBean userBean) {
		boolean flag = true;
		// 1. 设置developer平台的ApiKey/SecretKey
		String apiKey = Const.BAIDU_APP_KEY;
		String secretKey = Const.BAIDU_APP_SECRET;
		ChannelKeyPair pair = new ChannelKeyPair(apiKey, secretKey);
		
		// 2. 建立BaiduChannelClient对象实例
		BaiduChannelClient channelClient = new BaiduChannelClient(pair);
		
		// 3. 若要了解交互细节,请注册YunLogHandler类
		channelClient.setChannelLogHandler(new YunLogHandler() {
			@Override
			public void onHandle(YunLogEvent event) {
				// TODO Auto-generated method stub
				System.out.println(event.getMessage());
			}
		});
		
		try {
			// 4. 建立请求类对象
			PushUnicastMessageRequest request = new PushUnicastMessageRequest();
			request.setDeviceType(3); // device_type => 1: web 2: pc 3:android 4:ios 5:wp	
			request.setChannelId(Long.getLong(messageCenter.getAppChannelID()));
			request.setUserId(messageCenter.getAppUserID());
			
			// 若要显示通知,
			request.setMessageType(1);	// 默认是0		
			// 此格式不可更改
			String message = "{\"title\":\""+messageCenter.getTitle()+"\",\"description\":\""+messageCenter.getContent()+"\"}";
			System.out.println("android推送消息:"+message);
			request.setMessage(message);
 			
			
			// 5. 调用pushMessage接口
			PushUnicastMessageResponse response = channelClient.pushUnicastMessage(request);
				
			// 6. 认证推送成功
			Assert.assertEquals(1, response.getSuccessAmount());
			
		} catch (ChannelClientException e) {
			// 处理客户端错误异常
			flag = false;
			e.printStackTrace();
		} catch (ChannelServerException e) {
			// 处理服务端错误异常
			flag = false;
			System.out.println(
					String.format("request_id: %d, error_code: %d, error_message: %s" , 
						e.getRequestId(), e.getErrorCode(), e.getErrorMsg()
						)
					);
		}finally{
			return flag;
		}
		
	}
至于客户端接受推送的程序能够参考百度给出的案例

到目前的使用心得,推送偶尔会有延迟,其余还好! web

相关文章
相关标签/搜索