Browse Source

fix 6 mqtt lose

devab
赵明涛 4 weeks ago
parent
commit
5f0e0e2ac2
  1. 49
      app/src/main/java/com/ouxuan/oxface/device/MqttManager.java

49
app/src/main/java/com/ouxuan/oxface/device/MqttManager.java

@ -570,12 +570,44 @@ public class MqttManager {
if (status == Status.OK) { if (status == Status.OK) {
LogManager.logDebug(TAG, "消息发布成功"); LogManager.logDebug(TAG, "消息发布成功");
} else { } else {
LogManager.logError(TAG, "消息发布失败: " + errMsg);
String errorMsg = errMsg != null ? errMsg : "未知错误";
LogManager.logError(TAG, "消息发布失败: " + errorMsg);
// 记录异常信息以便调试
if (cause != null) {
LogManager.logError(TAG, "发布异常详情", cause);
}
} }
} }
@Override @Override
public void onSubscribeCompleted(Status status, IMqttToken asyncActionToken, Object userContext, String errMsg, Throwable cause) { public void onSubscribeCompleted(Status status, IMqttToken asyncActionToken, Object userContext, String errMsg, Throwable cause) {
// 记录详细的调试信息
String tokenInfo = "null";
String userContextInfo = "null";
try {
if (asyncActionToken != null && asyncActionToken.getTopics() != null) {
tokenInfo = java.util.Arrays.toString(asyncActionToken.getTopics());
}
} catch (Exception e) {
LogManager.logError(TAG, "获取token信息失败", e);
}
try {
if (userContext instanceof MQTTRequest) {
userContextInfo = userContext.toString();
} else if (userContext != null) {
userContextInfo = userContext.toString();
}
} catch (Exception e) {
LogManager.logError(TAG, "获取userContext信息失败", e);
}
String debugInfo = String.format("onSubscribeCompleted: status[%s], topics[%s], userContext[%s], errMsg[%s]",
status != null ? status.name() : "null", tokenInfo, userContextInfo, errMsg != null ? errMsg : "null");
LogManager.logInfo(TAG, "订阅回调详情: " + debugInfo);
if (status == Status.OK) { if (status == Status.OK) {
LogManager.logInfo(TAG, "主题订阅成功: " + subscribeTopic); LogManager.logInfo(TAG, "主题订阅成功: " + subscribeTopic);
} else { } else {
@ -583,15 +615,26 @@ public class MqttManager {
LogManager.logError(TAG, "主题订阅失败: " + errorMsg); LogManager.logError(TAG, "主题订阅失败: " + errorMsg);
// 检查是否是由于代理程序不可用导致的错误 // 检查是否是由于代理程序不可用导致的错误
if (errorMsg.contains("代理程序不可用")) {
if (errorMsg != null && errorMsg.contains("代理程序不可用")) {
LogManager.logError(TAG, "MQTT代理程序不可用,请检查网络连接和腾讯云IoT设备配置"); LogManager.logError(TAG, "MQTT代理程序不可用,请检查网络连接和腾讯云IoT设备配置");
} }
// 记录异常信息以便调试
if (cause != null) {
LogManager.logError(TAG, "订阅异常详情", cause);
}
} }
} }
@Override @Override
public void onUnSubscribeCompleted(Status status, IMqttToken asyncActionToken, Object userContext, String errMsg, Throwable cause) { public void onUnSubscribeCompleted(Status status, IMqttToken asyncActionToken, Object userContext, String errMsg, Throwable cause) {
LogManager.logInfo(TAG, "取消订阅完成: " + errMsg);
String message = errMsg != null ? errMsg : "取消订阅完成";
LogManager.logInfo(TAG, "取消订阅完成: " + message);
// 记录异常信息以便调试
if (cause != null) {
LogManager.logError(TAG, "取消订阅异常详情", cause);
}
} }
@Override @Override

Loading…
Cancel
Save