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

相關文章
相關標籤/搜索