Java SDK 快速开始

Queck start是一个介绍如何使用Java sdk的入门手册,方便用户快速地通过sdk使用D推服务。

Step1注册成为D推开发者

如果已经是D推开发者用户,请直接跳至step2。 关于注册开发者账号,请参见:注册成为D推开发者

Step2创建开发者应用并开通push服务

如已使用push服务,请直接跳至step4。

API key (AK) : 一个应用的公钥及唯一标识。用于在使用D推开发者服务时标记一个应用,创建后不能修改。

Secret key (SK) : 对应一个AK的密钥,用于在使用D推开发者服务时生成签名或加密数据,开发者可以随时进行重置. 请务必确认SK的内容不会泄露给第三方,否则可能产生安全问题,如确认SK被泄露,请立即在开发者中心进行重置。

API key和Secret key将组成校验对,用于app的合法身份验证。另外,它们也将用于构造DPushClient对象,以便于sdk接口的调用。

Step3下载并安装快速DEMO

如果客户端已安装应用demo,并且demo运行正常,请直接跳至step4。

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.isoftop.com”,“api.push.isoftop.com”。 推送域名已经设置完成,开发者也可以修改该值。修改方式:将上述的域名串替换下图中的值。

图片

Step5 使用Java SDK推送单播消息

本节以单播推送接口的使用实例介绍Java SDK接口的使用流程,其他接口调用可参考本流程。另外,Java SDK在包com.isoftop.yun.push.sample包(下图)给出了所有接口的使用实例,方便用户快速熟悉接口的使用。下载最新Java SDK 图片

创建PushKeyPair

String apiKey = “xxxxxxxxxxxxxxxxxxxxxx”;
String secretKey = “xxxxxxxxxxxxxxxxxxxxxx”;  
PushKeyPair pair = new PushKeyPair(apiKey,secretKey);

创建DPushClient,访问SDK接口

DPushClient pushClient = new DPushClient(pair,
DPushConstants.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 D 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 (DPushConstants.ERROROPTTYPE) { 
        throw e;
    } else {
        e.printStackTrace();
    }
} catch (PushServerException e) {
    if (DPushConstants.ERROROPTTYPE) {
        throw e;
    } else {
        System.out.println(String.format(
                "requestId: %d, errorCode: %d, errorMessage: %s",
                e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
    }
}