|
@@ -23,17 +23,22 @@ import java.util.Map;
|
|
|
|
|
|
import cn.org.bjca.trust.android.lib.im.cfg.Constant;
|
|
import cn.org.bjca.trust.android.lib.im.cfg.Constant;
|
|
import cn.org.bjca.trust.android.lib.im.common.DeviceHelper;
|
|
import cn.org.bjca.trust.android.lib.im.common.DeviceHelper;
|
|
|
|
+import cn.org.bjca.trust.android.lib.im.common.ToolsHelper;
|
|
import cn.org.bjca.trust.android.lib.im.common.json.GsonImplHelp;
|
|
import cn.org.bjca.trust.android.lib.im.common.json.GsonImplHelp;
|
|
import cn.org.bjca.trust.android.lib.im.enums.MsgType;
|
|
import cn.org.bjca.trust.android.lib.im.enums.MsgType;
|
|
import cn.org.bjca.trust.android.lib.im.enums.PacketType;
|
|
import cn.org.bjca.trust.android.lib.im.enums.PacketType;
|
|
|
|
+import cn.org.bjca.trust.android.lib.im.http.HttpResult;
|
|
import cn.org.bjca.trust.android.lib.im.im.bean.PacketMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.bean.PacketMessage;
|
|
-import cn.org.bjca.trust.android.lib.im.kit.IMInterface;
|
|
|
|
|
|
+import cn.org.bjca.trust.android.lib.im.im.kit.RequestImCallback;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.ConnectMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.ConnectMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.ConnectedMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.ConnectedMessage;
|
|
-import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
|
|
|
|
|
|
+import cn.org.bjca.trust.android.lib.im.im.msg.RequestMessage;
|
|
|
|
+import cn.org.bjca.trust.android.lib.im.im.msg.ResultMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.SendAckMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.SendAckMessage;
|
|
|
|
+import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXTextMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXTextMessage;
|
|
import cn.org.bjca.trust.android.lib.im.im.opt.ImConnectOptions;
|
|
import cn.org.bjca.trust.android.lib.im.im.opt.ImConnectOptions;
|
|
|
|
+import cn.org.bjca.trust.android.lib.im.kit.IMInterface;
|
|
import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
|
|
import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
|
|
import cn.org.bjca.trust.android.lib.im.kit.IMSDKListener;
|
|
import cn.org.bjca.trust.android.lib.im.kit.IMSDKListener;
|
|
import cn.org.bjca.trust.android.lib.im.kit.MsgListener;
|
|
import cn.org.bjca.trust.android.lib.im.kit.MsgListener;
|
|
@@ -70,6 +75,7 @@ public class ImManager implements IMInterface {
|
|
|
|
|
|
private final List<MsgListener> msgListeners = new ArrayList<>();
|
|
private final List<MsgListener> msgListeners = new ArrayList<>();
|
|
private final Map<String, IMSDKCallback> msgListenerMap = new HashMap<>();
|
|
private final Map<String, IMSDKCallback> msgListenerMap = new HashMap<>();
|
|
|
|
+ private final Map<String, RequestImCallback> requestMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -168,6 +174,16 @@ public class ImManager implements IMInterface {
|
|
m.what = 10002;
|
|
m.what = 10002;
|
|
handler.sendMessage(m);
|
|
handler.sendMessage(m);
|
|
|
|
|
|
|
|
+ }
|
|
|
|
+ // 接口请求应答
|
|
|
|
+ else if (topic.equals(topic_result)) {
|
|
|
|
+ ResultMessage resultMessage = GsonImplHelp.get().toObject(msg, ResultMessage.class);
|
|
|
|
+
|
|
|
|
+ Message m = new Message();
|
|
|
|
+ m.obj = resultMessage;
|
|
|
|
+ m.what = 10004;
|
|
|
|
+ handler.sendMessage(m);
|
|
|
|
+
|
|
}
|
|
}
|
|
// 新消息送达
|
|
// 新消息送达
|
|
else if (topic.equals(topic_arrive)) {
|
|
else if (topic.equals(topic_arrive)) {
|
|
@@ -262,7 +278,34 @@ public class ImManager implements IMInterface {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void sendSZYXMessage(SZYXMessage message, IMSDKCallback callback) {
|
|
public void sendSZYXMessage(SZYXMessage message, IMSDKCallback callback) {
|
|
- sendPacketMessage(PacketType.SEND, message, callback);
|
|
|
|
|
|
+ if (ToolsHelper.isNull(message.getToClientId())) {
|
|
|
|
+ if (null != callback) callback.failed(202, "没有消息接收者[toClientId]");
|
|
|
|
+ for (MsgListener listener : msgListeners) {
|
|
|
|
+ listener.statusChange(message.getMsgId(), -1);
|
|
|
|
+ }
|
|
|
|
+ } else
|
|
|
|
+ sendPacketMessage(PacketType.SEND, message, callback);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void request(RequestMessage message, RequestImCallback callback) {
|
|
|
|
+ this.sendPacketMessage(PacketType.REQUEST, message, new IMSDKCallback() {
|
|
|
|
+ @Override
|
|
|
|
+ public void success() {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void failed(int code, String error) {
|
|
|
|
+ callback.failed(4001, error);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ requestMap.put(message.getMsgId(), callback);
|
|
|
|
+ Message m = new Message();
|
|
|
|
+ m.obj = message.getMsgId();
|
|
|
|
+ m.what = 10003;
|
|
|
|
+ handler.sendMessageDelayed(m, 600);
|
|
}
|
|
}
|
|
|
|
|
|
private void sendConnectMsg() {
|
|
private void sendConnectMsg() {
|
|
@@ -347,6 +390,23 @@ public class ImManager implements IMInterface {
|
|
msgListenerMap.remove(msgId1);
|
|
msgListenerMap.remove(msgId1);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case 10003:
|
|
|
|
+ String msgId3 = (String) msg.obj;
|
|
|
|
+ RequestImCallback imCallback = requestMap.get(msgId3);
|
|
|
|
+ if (null != imCallback) {
|
|
|
|
+ imCallback.failed(4001, "发送超时");
|
|
|
|
+ requestMap.remove(msgId3);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 10004:
|
|
|
|
+ ResultMessage resultMessage = (ResultMessage) msg.obj;
|
|
|
|
+ String msgId4 = resultMessage.getAckId();
|
|
|
|
+ RequestImCallback callback4 = requestMap.get(msgId4);
|
|
|
|
+ if (null != callback4) {
|
|
|
|
+ callback4.success(resultMessage);
|
|
|
|
+ requestMap.remove(msgId4);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|