跳转到内容

YunBa Java SDK API 手册

MqttAsyncClient 的静态方法, 根据 AppKey (来自portal) 实例化 MqttAsyncClient

public static MqttAsyncClient createMqttClient(String appkey) throws MqttException, JSONException

名称 类型 说明
appKey String YunBa Portal 中注册的 App Key
final MqttAsyncClient mqttAsyncClient = MqttAsyncClient.createMqttClient("52fcc04c4dc903d66d6f8f92");
//mqttAsyncClient.setCallback(new MqttCallback())

MqttAsyncClient 对象的回调函数,用来接受消息,处理连接断开等事件。

public void setCallback(MqttCallback callback)

名称 类型 说明
callback MqttCallback 处理消息到达,服务器状态变化等事件
mqttAsyncClient.setCallback(new MqttCallback() {
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
System.out.println("mqtt receive topic = " + topic + " msg = " + new String(message.getPayload())) ;//reciver msg from yunba server
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
}
@Override
public void connectionLost(Throwable cause) {
System.out.println("mqtt connectionLost");
}

MqttAsyncClient 连接到 YunBa Server, 只有连接成功后才能调用 subscribe, publish 等 API。

public void connect(IMqttActionListener mqttAction)

名称 类型 说明
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.connect(getApplicationContext(),topic,
new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
// do subscibe, publish....
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("connect to server failed with the error code = " + ex.getReasonCode());
}
}
}
);

App 可以订阅一个或者多个 Topics, 以便可以接收来自 Topic 的 Message.

public void subscribe(String topic, IMqttActionListener mqttAction)

public void subscribe(String[] topics, IMqttActionListener mqttAction)

名称 类型 说明
topic String app 订阅的的频道,取值范围详见 参数说明
topics String[] app 订阅的的频道数组列表,取值范围详见 参数说明
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.subscribe(topic, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
// do publish...
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("subscribe failed with the error code = " + ex.getReasonCode());
}
}
}
);

App 可以取消订阅一个或者多个 Topics, 以便取消接收来自 Topic 的 Message.

public void unsubscribe(String topic, IMqttActionListener mqttAction)

public void unsubscribe(Context context, String[] topics, IMqttActionListener mqttAction)

名称 类型 说明
topic String app 订阅的的频道,取值范围详见 参数说明
topics String[] app 订阅的的频道数组列表,取值范围详见 参数说明
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.unsubscribe(topic,new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
//...
}
@Override
public void onFailure(IMqttToken asyncActionToken,Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("connect to server failed with the error code = " + ex.getReasonCode());
}
}
}
);

App 可以向 Topic 发送消息, 那么任何订阅此 Topic 的 Client 都会接受到消息。

public void publish(String topic, String message,IMqttActionListener mqttAction))

public void publish(String topic, String message, Map opts, IMqttActionListener mqttAction)

名称 类型 说明
topic String app 订阅的的频道,取值范围详见 参数说明
message String 向目标 topic 的订阅者发布的消息
opts Map 向目标 topic 的订阅者发布的消息的选项:如消息有效时间,目标平台等等
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.publish(topic, msg, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
String[] topic = asyncActionToken.getTopics();
//....
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("publish failed with the error code = " + ex.getReasonCode());
}
}
}
);

向用户别名发送消息, 用于实现点对点的消息发送。

public void publishToAlias(String alias, String message,IMqttActionListener mqttAction)

public void publishToAlias(String alias, String message, Map opts, IMqttActionListener mqttAction)

名称 类型 说明
alias String 用户设置的别名信息,取值范围详见 参数说明
message String 向目标别名的订阅者发布的消息
opts Map 向目标别名的订阅者发布的消息的选项:如消息有效时间,目标平台等等
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.publishToAlias(topic, msg,
new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
//....
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("publishToAlias failed with the error code = " + ex.getReasonCode());
}
}
}
);

App 可以调用此函数来上报客户端的行为,如打开通知栏次数,按钮点击次数,资源下载成功等等行为。

public void report(String actiton, String data)

名称 类型 说明
action String 需要统计的行为,如打开通知栏,下载资源成功等等
data String 想对应 action 的附加数据,以满足统计相关的其他业务需求
mqttAsyncClient.report("notifaction_opened", null,);

App 可以调用此函数来绑定账号,用户名,每个用户只能指定一个别名。

public void setAlias(String alias, IMqttActionListener mqttAction)

名称 类型 说明
alias String 用户设置的别名信息,取值范围详见 参数说明
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.setAlias(alias,
new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
String alias = asyncActionToken.getAlias();
//...
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("setAlias failed with the error code = " + ex.getReasonCode());
}
}
}
);

App 可以调用此函数来获取当前用户的别名。

public void getAlias(IMqttActionListener mqttAction)

名称 类型 说明
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.getAlias(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken mqttToken) {
String alias = mqttToken.getAlias();
//...
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("getAlias failed with the error code = " + ex.getReasonCode());
}
}
}
);

App 可以查询用户订阅的频道列表,如果不传入参数 alias, 则是获取当前用户的频道列表,如果输入参数 alias,则是获取目标 alias 的频道列表。

public void getTopicList(IMqttActionListener mqttAction)

public static void getTopicList(String alias, IMqttActionListener mqttAction)

名称 类型 说明
alias String 用户设置的别名信息,取值范围详见 参数说明
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.getTopicList(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken mqttToken) {
JSONObject result = mqttToken.getResult();
try {
JSONArray topics = result.getJSONArray("topics");
System.out.println(topics.toString());
} catch (JSONException e) {
}
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("getTopicList failed with the error code = " + ex.getReasonCode());
}
}
}
);

App 可以调用此函数来获取订阅输入 Topic 下面所有的用户的别名。

public void getAliasList(String topic, IMqttActionListener mqttAction)

public void getAliasList(String topic, boolean disableState, boolean disableAlias, IMqttActionListener mqttAction)

名称 类型 说明
topic String app 订阅的的频道,取值范围详见 参数说明
disableState boolean 结果是否排除别名状态信息
disableAlias boolean 结果是否排除别名列表
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.getAliasList("t1",
new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken mqttToken) {
JSONObject result = mqttToken.getResult();
try {
JSONArray topics = result.getJSONArray("alias");
System.out.println(topics.toString());
} catch (JSONException e) {
}
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("getAliasList failed with the error code = " + ex.getReasonCode());
}
}
}
);

根据别名来获取用用户的状态,如是否在线等信息

public void getState(String alias, IMqttActionListener mqttAction)

名称 类型 说明
alias String 用户设置的别名信息,取值范围详见 参数说明
mqttAction IMqttActionListener 成功会回调 onSuccess, 失败回调 onFailure
mqttAsyncClient.getState("t1", new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken mqttToken) {
JSONObject result = mqttToken.getResult();
try {
String status = result.getString("status");
System.out.println("status = " + status);
} catch (JSONException e) {
}
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
if (exception instanceof MqttException) {
MqttException ex = (MqttException)exception;
System.err.println("get state failed with the error code = " + ex.getReasonCode());
}
}
}
);