NAV
java

快速上手

展示最基本的流程

接口说明

——— 接口初始化 ———

初始化客户端

initClient 初始化客户端 用法示例:

/**1.继承 UsrCloudMqttClientAdapter */
public class ClientAdapter extends UsrCloudMqttClientAdapter {
/**2.重写 父类的方法*/
@Override
public void Connect(String userName, String passWord) throws MqttException {
super.Connect(userName, passWord);
}
}

创建一个类继承自 UsrCloudMqttClientAdapter 重写父类方法

class ClientAdapter extends UsrCloudMqttClientAdapter {}

初始化客户端回调

initClientCallback 初始化客户端回调 用法示例:

/**1.继承 UsrCloudMqttCallbackAdapter */
public class ClinetCallbackAdapter extends UsrCloudMqttCallbackAdapter {
/**2.重写 父类的方法*/
@Override
public void onConnectAck(int returnCode) {
super.onConnectAck(returnCode);
}
}

创建一个类继承自 UsrCloudMqttCallbackAdapter 重写父类方法

class ClinetCallbackAdapter extends UsrCloudMqttCallbackAdapter{}

——— 连接和断开 ———

onConnectAck 连接响应回调函数

onConnectAck 响应回调函数 用法示例:

/**1.继承 UsrCloudMqttCallbackAdapter */
public class ClinetCallbackAdapter extends UsrCloudMqttCallbackAdapter {
/**2.重写 onConnectAck 方法*/
@Override
public void onConnectAck(int returnCode, String description) {
super.onConnectAck(returnCode, Description);
}
}

函数原型:

onConnectAck(int returnCode);

onConnectAck 定义

参数 描述
returnCode [in] 返回码
description [in] 返回码代表的含义

可能的返回码如下:

返回码 返回码代表的含义
0x00 [in] 连接成功
0x01 [in] 连接断开
0x02 [in] 与服务器完成连接
0x03 [in] 与服务器连接断开

Connect 连接

Connect 连接 用法示例:

public void connect() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.进行连接 */
clientAdapter.Connect("testuser", "testuser");
}

函数原型:

void Connect(String userName, String passWord) throws MqttException;

参数 描述
userName [in] 用户名
passWord [in] 密码
返回值 描述
无返回值 最终有没有连接成功,要通过 onConnectAck 设置的回调函数来判断。

DisConnect 断开连接

DisConnect 连接 用法示例:

public boolean disConnect() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.取消连接 */
return clientAdapter.DisConnect();
}

函数原型:

boolean DisConnect();

返回值 描述
boolean 成功返回 true ,失败返回 false

——— 订阅消息 ———

onSubscribeAck 订阅响应 回调函数

onSubscribeAck 响应 回调 用法示例:

/**继承 UsrCloudMqttCallbackAdapter*/
public class ClinetCallbackAdapter extends UsrCloudMqttCallbackAdapter {
/**重写 onSubscribeAck 函数*/
@Override
public void onSubscribeAck(int messageId, String devId, int returnCode) {
super.onSubscribeAck(messageId, devId, returnCode);
}
}

函数原型:

onSubscribeAck(int messageId, String devId, int returnCode);

参数 描述
messageId [in] 消息ID。
devId [in] 设备ID。
returnCode [in] 返回码

可能的返回码如下:

返回码 返回码代表的含义
0x00 订阅成功
0x01 订阅失败

Subscribe 订阅消息( 单个设备 )

Subscribe 订阅消息 用法示例:

public void SubscribeforDevId() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.进行连接 */
clientAdapter.Connect("testuser", "testuser");
/* 5.订阅消息(单个设备)*/
clientAdapter.SubscribeForDevId("123456");
}

函数原型:

void Subscribe(String devId) throws MqttException;

参数 描述
devId [in] 设备ID。指定要订阅哪个设备发来的消息。
返回值 描述
无返回值 最终订阅结果要通过 onSubscribeAck 设置的回调函数来判断。

SubscribeForUsername 订阅消息( 账户的所有设备 )

SubscribeForUsername 订阅账号下的所有设备 用法示例:

public void SubscribeForUsername() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.进行连接 */
clientAdapter.Connect("testuser", "testuser");
/* 5.订阅消息(账户的所有设备) */
clientAdapter.SubscribeForUsername();
}

函数原型:

void SubscribeForUsername() throws MqttException;

返回值 描述
无返回值 最终订阅结果要通过 onSubscribeAck 设置的回调函数来判断。

DisSubscribe 取消订阅( 单个设备 )

DisSubscribeforDevId 取消订阅 用法示例:

public void DisSubscribeforDevId() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.进行连接 */
clientAdapter.Connect("testuser", "testuser");
/* 5.取消订阅消息(单个设备) */
clientAdapter.DisSubscribeforDevId("1234");
}

函数原型:

void DisSubscribeforDevId(String devId) throws MqttException;

参数 描述
devId [in] 设备ID。指定要取消订阅哪个设备。
返回值 描述
void 最取消订阅结果要通过 onDisSubscribeAck 设置的回调函数来判断

DisSubscribeforuName 取消订阅( 账户下的所有设备 )

DisSubscribeforuName 取消订阅 用法示例:

public void DisSubscribeforuName() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.进行连接 */
clientAdapter.Connect("testuser", "testuser");
/* 5.取消订阅消息(账户下所有设备) */
clientAdapter.DisSubscribeforuName();
}

函数原型:

void DisSubscribeforuName() throws MqttException;

返回值 描述
void 最取消订阅结果要通过 onDisSubscribeAck 设置的回调函数来判断

——— 推送消息 ———

onPublishDataAck 推送响应 回调函数

onPublishDataAck 用法示例:

/**继承 UsrCloudMqttCallbackAdapter*/
public class ClinetCallbackAdapter extends UsrCloudMqttCallbackAdapter {
/**重写 onPublishDataAck 函数*/
@Override
public void onPublishDataAck(int messageId, boolean isSuccess) {
super.onPublishDataAck(messageId, isSuccess);
}
}

函数原型:

void onPublishDataAck(int messageId, boolean isSuccess);

参数 描述
messageId 消息ID。
isSuccess 推送标识符。

可能的标识符如下:

标识符 标识符代表的含义
true 推送成功
false 推送失败

publishForDevId 推送数据(向单个设备)

publishForDevId 用法示例:

public void publishForDevId() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.进行连接 */
clientAdapter.Connect("testuser", "testuser");
/* 5.初始化测试数据 */
byte[] data = { 0x00, 0x01, 0x02 };
/* 6.发送数据 */
clientAdapter.publishForDevId("1234", data);
}

函数原型:

void publishForDevId(String devId, byte[] data) throws MqttPersistenceException, MqttException;

参数 描述
devId [in] 设备ID,指定要把数据发给哪个设备。只能填一个
devId [in] 要发送的数据。
返回值 描述
无返回值 最终推送结果要通过 onPublishDataAck 设置的回调函数来判断。

publishForuName 推送数据(向账户下的所有设备)

publishForuName 用法示例:

public void publishForuName() throws MqttException {
/* 1.初始化客户端适配 */
ClientAdapter clientAdapter = new ClientAdapter();
/* 2.初始化客户端回调适配 */
ClinetCallbackAdapter clinetCallbackAdapter = new ClinetCallbackAdapter();
/* 3.客户端设置回调 */
clientAdapter.setUsrCloudMqttCallback(clinetCallbackAdapter);
/* 4.进行连接 */
clientAdapter.Connect("testuser", "testuser");
/* 5.初始化测试数据 */
byte[] data = { 0x00, 0x01, 0x02 };
/* 6.发送数据 */
clientAdapter.publishForuName(data);
}

函数原型:

void publishForuName(byte[] data) throws MqttPersistenceException, MqttException;

参数 描述
data [in] 要发送的数据。
返回值 描述
无返回值 最终推送结果要通过 onPublishDataAck 设置的回调函数来判断。

——— 接收消息 ———

onReceiveEvent 收到数据 回调函数

onReceiveEvent 用法示例:

public class ClinetCallbackAdapter extends UsrCloudMqttCallbackAdapter {
@Override
public void onReceiveEvent(int messageId, String topic, byte[] data) {
super.onReceiveEvent(messageId, topic, data);
}
}

函数原型:

void onReceiveEvent(int messageId, String topic, byte[] data);

参数 描述
messageId [in] 消息ID。
topic [in] 主题。消息来源。
data [in] 收到的数据。
返回值 描述
无返回值

常见问题

Jar版本差异

配置 用法示例:

android {
compileSdkVersion 25
buildToolsVersion 25.0.3
defaultConfig {
...
jackOptions {
enabled true
}
}
dexOptions {
incremental true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

Error:Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using Java 8 or above.
If you are using the ‘java’ gradle plugin in a library submodule add
targetCompatibility = ‘1.7’
sourceCompatibility = ‘1.7’
to that submodule’s build.gradle file.

原因简要说明:
jar包是基于jdk 1.8的 如果编译工具低于1.8会报以上编译异常
解决方法:
在Module的build.gradle配置文件中 加上一下配置 使你的项目适配JDK1.8。

jackOptions{ enabled true }
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

更新历史

版本 日期 更新内容 更新人
1.0 2017-7-18 初版 石志远