浏览代码

发送文本消息

xuqm 1 年之前
父节点
当前提交
b323e3e248

+ 11 - 6
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java

@@ -164,7 +164,7 @@ public class ImManager implements IMInterface {
                         SendAckMessage sendAckMessage = GsonImplHelp.get().toObject(msg, SendAckMessage.class);
 
                         Message m = new Message();
-                        m.obj = sendAckMessage.getAckId();
+                        m.obj = sendAckMessage;
                         m.what = 10002;
                         handler.sendMessage(m);
 
@@ -319,9 +319,9 @@ public class ImManager implements IMInterface {
         @Override
         public void handleMessage(@NonNull Message msg) {
             super.handleMessage(msg);
-            String msgId = (String) msg.obj;
             switch (msg.what) {
                 case 10001:
+                    String msgId = (String) msg.obj;
                     IMSDKCallback callback = msgListenerMap.get(msgId);
                     if (null != callback) {
                         callback.failed(207, "发送超时");
@@ -333,13 +333,18 @@ public class ImManager implements IMInterface {
                     }
                     break;
                 case 10002:
-                    IMSDKCallback callback1 = msgListenerMap.get(msgId);
+                    SendAckMessage sendAckMessage = (SendAckMessage) msg.obj;
+                    String msgId1 = sendAckMessage.getAckId();
+                    IMSDKCallback callback1 = msgListenerMap.get(msgId1);
                     if (null != callback1) {
                         for (MsgListener listener : msgListeners) {
-                            listener.statusChange(msgId, 0);
+                            if (sendAckMessage.getAckStatus() == 0)
+                                listener.statusChange(msgId1, 0);
+                            else listener.statusChange(msgId1, -1);
                         }
-                        callback1.success();
-                        msgListenerMap.remove(msgId);
+                        if (sendAckMessage.getAckStatus() == 0) callback1.success();
+                        else callback1.failed(208, "服务端转发失败");
+                        msgListenerMap.remove(msgId1);
                     }
                     break;
             }

+ 12 - 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SendAckMessage.java

@@ -9,6 +9,10 @@ public class SendAckMessage extends PacketMessage {
         super(PacketType.SEND_ACK);
     }
     private String ackId;
+    /**
+     * 0-成功;-1-失败;
+     */
+    private int ackStatus;
 
     public String getAckId() {
         return ackId;
@@ -17,4 +21,12 @@ public class SendAckMessage extends PacketMessage {
     public void setAckId(String ackId) {
         this.ackId = ackId;
     }
+
+    public int getAckStatus() {
+        return ackStatus;
+    }
+
+    public void setAckStatus(int ackStatus) {
+        this.ackStatus = ackStatus;
+    }
 }