百度云推送javaSDK demo
2017-03-15 18:31
197 查看
百度云推送巴拉巴拉巴拉
近阶段由于PM同学的强烈要求,我们app服务端准备接入百度云推送工程,那么现在开始demo走起,本Demo主要是针对标签推送。下载百度云推送SDK
网址:http://push.baidu.com/doc/java/api
找到javaSDK进行下载即可;
import com.baidu.yun.core.log.YunLogEvent; 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.PushMsgToTagRequest; import com.baidu.yun.push.model.PushMsgToTagResponse; /** * Created by New-Bee on 2017/2/16. */ public class PushTest { public static void main(String[] args) throws PushClientException, PushServerException { /** * 1. * 身份合法性验证 */ String apiKey = "domotGdRGCLR2x20UujEZNIz"; // 创建应用时,会在应用里面看到 String secretKey = "IglRgUVnCHyGhblwo6UWAtzkFxkEMRxR"; // 同上 PushKeyPair pair = new PushKeyPair(apiKey, secretKey); /** * 2. * 创建一个BaiduPushClient对象来访问官方发布接口 * 参数说明: * pair : 通过apiKey和secretKey获取PushKeyPair对象 * BaiduPushConstants.CHANNEL_REST_URL: * 为服务URL地址,注意,如果你的推送服务器不可以访问外网的话,那么这个url是不能用的 * * */ BaiduPushClient pushClient = new BaiduPushClient(pair, BaiduPushConstants.CHANNEL_REST_URL); /** * 3. * 注册YunLogHandler对象,来获取交互请求中的详细信息 * * */ pushClient.setChannelLogHandler(new YunLogHandler() { public void onHandle(YunLogEvent event) { System.out.println(event.getMessage()); } }); try { /** * 4. * 开始组装按标签组推送接口所需要的参数 * * addTagName:标签名称 * addMsgExpires:消息失效时间(单位秒) * addMessageType: 1 :普通通知 ,2:透传通知 * addMessage: 添加消息体 * addDeviceType:设备类型 3:android 4:IOS * */ PushMsgToTagRequest request = new PushMsgToTagRequest() .addTagName("xingge") .addMsgExpires(new Integer(3600)) .addMessageType(1) // .addSendTime(System.currentTimeMillis() / 1000 + 70). .addMessage("{\"title\":\"TEST\",\"description\":\"Hello Baidu push!\"}") .addDeviceType(3); /** * 5. * 开始推送消息 * */ PushMsgToTagResponse response = pushClient.pushMsgToTag(request); /** * 6. * Http请求返回值解析 * */ System.out.println("msgId: " + response.getMsgId() + ",sendTime: " + response.getSendTime() + ",timerId: " + response.getTimerId()); } catch (PushClientException e) { if (BaiduPushConstants.ERROROPTTYPE) { throw e; } else { e.printStackTrace(); } } catch (PushServerException e) { if (BaiduPushConstants.ERROROPTTYPE) { throw e; } else { System.out.println(String.format( "requestId: %d, errorCode: %d, errorMsg: %s", e.getRequestId(), e.getErrorCode(), e.getErrorMsg())); } } } }
这里需要注意一点
安卓与IOS的消息体格式是不一样的详细消息接口说明请参照官方文档
Android
{ "title" : "hello" , "description": "hello world" // 必选 "notification_builder_id": 0, // 可选 "notification_basic_style": 7, // 可选 "open_type":0, // 可选 "url": "http://developer.baidu.com", // 可选 "pkg_content":"", // 可选 "custom_content":{"key":"value"}, // 自定义 }
IOS
{ "aps": { "alert":"Message From Baidu Cloud Push-Service", "sound":"", // 可选 "badge":0, // 可选 }, "key1":"value1",// 自定义 "key2":"value2" }
一些问题
消息推送延时特别严重,与官方所说的实时并不一致;在写Demo过程当中发现,IOS与Android居然是分开的,个人觉得这块对于RD来说应该是透明的,设计不太合理;
IOS偶现消息丢失现象,通过现象推测,个人觉得应该是消息覆盖或消息在还没推送到设备时已经失效;
总结
Created with Raphaël 2.1.0端端云服务云服务调用端SDK接口进行绑定;绑定成功并返回channelId。Created with Raphaël 2.1.0端端Java服务Java服务携带channelId以及设备类型,调用服务端接口与自己的服务进行绑定绑定成功。
Created with Raphaël 2.1.0java服务java服务云服务云服务调用JavaSDK接口并把消息推到云端推送成功,携带msgId和sendTime返回推送失败,携带requestId返回
相关文章推荐
- 微博开发平台java SDK demo学习之examples(demo)
- 海康威视的sdk中java版本Demo的Bug
- JAVA版 微信js-sdk接口调用demo
- 使用ArcGIS-JAVA-sdk,做一个arcgis的java小demo
- 七牛---关于JAVA SDK的各种Demo
- 易班开放平台第三方网站接入的Demo(Java_SDK)的步骤
- 百度云推送java服务端maven安装完整demo
- 微博开发平台java SDK demo学习之friendships
- JAVA SDK 极光推送后台DEMO
- javasdk设置问题
- IBM SDK for Java 6 beta 版本发布
- SAP BI Java SDK简介(www.mynetweaver.cn)
- AE92 SDK for Java 窗体简例
- Teamprise Readies Java SDK for TFS
- JAVA国际化DEMO
- live domains sdk version 2.0 for java 更新
- 在 Ubuntu 5.10 上安裝 Sun Java SDK 1.5
- AE92 SDK for Java 窗体简例
- AE92 SDK for Java 最小示例学习
- JAVA国际化DEMO