最近给目前作的项目添加了一个新的功能,给客户端推送消息 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