最近給目前作的項目添加了一個新的功能,給客戶端推送消息 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