Java SDK 快速开始
Queck start是一个介绍如何使用Java sdk的入门手册,方便用户快速地通过sdk使用百度云推送服务。
Step1注册成为百度开发者
如果已经是百度开发者用户,请直接跳至step2。
关于注册开发者账号,请参见:注册成为百度开发者。
Step2创建开发者应用并开通push服务
如已使用push服务,请直接跳至step4。
开通push服务,请参见:创建应用并开通push服务。
在应用详情页面找到当前应用的API key和Secret key。
API key (AK) : 一个应用的公钥及唯一标识。用于在使用百度开发者服务时标记一个应用,创建后不能修改。
Secret key (SK) : 对应一个AK的密钥,用于在使用百度开发者服务时生成签名或加密数据,开发者可以随时进行重置. 请务必确认SK的内容不会泄露给第三方,否则可能产生安全问题,如确认SK被泄露,请立即在开发者中心进行重置。
API key和Secret key将组成校验对,用于app的合法身份验证。另外,它们也将用于构造BaiduPushClient对象,以便于sdk接口的调用。
Step3下载并安装快速DEMO
如果客户端已安装应用demo,并且demo运行正常,请直接跳至step4。
运行快速Demo,找到当前设备的channelId。
channelId: 设备的唯一标识, 在推送消息时,用于指定消息的目标接收设备。
Step4 开发环境配置
确保使用的javaSE-1.6及兼容版本。
使用类Eclipse的IDE,将libs和output下的jar包添加到工程路径。
jar包使用方式
创建自己的Eclipse项目工程,如图
将libs文件拷贝到push-demo目录下,将dist文件下的bccs-api-3.0.1.jar拷贝到libs中,如图
将libs下的jar文件添加到classpath下,如图
将sdk中src下的com文件夹拷贝到push-demo的src目录下,如图
将screctKey和apiKey等值替换成自己应用的信息,便可完成自己的推送了。
目前,支持的域名为:“api.tuisong.baidu.com”,“api.push.baidu.com”。
推送域名已经设置完成,开发者也可以修改该值。修改方式:将上述的域名串替换下图中的值。
Step5 使用Java SDK推送单播消息
本节以单播推送接口的使用实例介绍Java SDK接口的使用流程,其他接口调用可参考本流程。另外,Java SDK在包com.baidu.yun.push.sample包(下图)给出了所有接口的使用实例,方便用户快速熟悉接口的使用。下载最新Java SDK
创建PushKeyPair
String apiKey = “xxxxxxxxxxxxxxxxxxxxxx”;
String secretKey = “xxxxxxxxxxxxxxxxxxxxxx”;
PushKeyPair pair = new PushKeyPair(apiKey,secretKey);创建BaiduPushClient,访问SDK接口
BaiduPushClient pushClient = new BaiduPushClient(pair,
BaiduPushConstants.CHANNEL_REST_URL);注册YunLogHandler,获取本次请求的交互信息
pushClient.setChannelLogHandler (new YunLogHandler () {
@Override
public void onHandle (YunLogEvent event) {
System.out.println(event.getMessage());
}
});设置请求参数,创建请求实例
PushMsgToSingleDeviceRequest request = new PushMsgToSingleDeviceRequest().
addChannelId("xxxxxxxxxxxxxxxxxx").
addMsgExpires(new Integer(3600)). //设置消息的有效时间,单位秒,默认3600 x 5.
addMessageType(1). //设置消息类型,0表示消息,1表示通知,默认为0.
addMessage("{\"title\":\"TEST\",\"description\":\"Hello Baidu push!\"}").
addDeviceType(3); //设置设备类型,3 for android, 4 for ios.执行Http请求,获取返回结果
PushMsgToSingleDeviceResponse response = pushClient.
pushMsgToSingleDevice(request);Http请求结果打印
System.out.println("msgId: " + response.getMsgId()
+ ",sendTime: " + response.getSendTime());异常处理
try{
//设置请求参数,创建请求实例
.......................
//执行Http请求,获取返回结果
.......................
//Http请求结果打印
.......................
} catch (PushClientException e) {
/*ERROROPTTYPE 用于设置异常的处理方式 -- 抛出异常和捕获异常,
*'true' 表示抛出, 'false' 表示捕获。
*/
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, errorMessage: %s",
e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
}
}