Browse Source

发送消息绑定用户信息

xuqm 1 year ago
parent
commit
7254ff441a

+ 5 - 5
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/UserInfo.java

@@ -2,7 +2,7 @@ package cn.org.bjca.trust.android.lib.im.bean;
 
 public class UserInfo {
     private String userId;
-    private String userName;
+    private String token;
     private String password;
     private String appId;
     private String osType;
@@ -18,12 +18,12 @@ public class UserInfo {
         this.userId = userId;
     }
 
-    public String getUserName() {
-        return userName;
+    public String getToken() {
+        return token;
     }
 
-    public void setUserName(String userName) {
-        this.userName = userName;
+    public void setToken(String token) {
+        this.token = token;
     }
 
     public String getPassword() {

+ 9 - 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/cfg/Constant.java

@@ -7,6 +7,7 @@ public class Constant {
 
     private static String sdkAppID;
     private static String userId;
+    private static String token;
 
     public static void setSdkAppID(String sdkAppID) {
         Constant.sdkAppID = sdkAppID;
@@ -23,4 +24,12 @@ public class Constant {
     public static void setUserId(String userId) {
         Constant.userId = userId;
     }
+
+    public static String getToken() {
+        return token;
+    }
+
+    public static void setToken(String token) {
+        Constant.token = token;
+    }
 }

+ 29 - 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/enums/OsType.java

@@ -0,0 +1,29 @@
+package cn.org.bjca.trust.android.lib.im.enums;
+
+public enum OsType {
+    UNKNOWN(-1),
+    ANDROID(1),
+    WEB(2),
+    IOS(3),
+    MAC(4),
+    PC(5);
+
+    private int type = -1;
+
+    OsType(final int type) {
+        this.type = type;
+    }
+
+    public int type() {
+        return this.type;
+    }
+
+    public static OsType getType(final int type) {
+        for (final OsType value : OsType.values()) {
+            if (value.type == type) {
+                return value;
+            }
+        }
+        return UNKNOWN;
+    }
+}

+ 3 - 1
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/http/HeaderInterceptor.java

@@ -6,6 +6,7 @@ import java.io.IOException;
 
 import cn.org.bjca.trust.android.lib.im.BuildConfig;
 import cn.org.bjca.trust.android.lib.im.cfg.Constant;
+import cn.org.bjca.trust.android.lib.im.enums.OsType;
 import okhttp3.Interceptor;
 import okhttp3.Response;
 
@@ -17,8 +18,9 @@ public class HeaderInterceptor implements Interceptor {
         return chain.proceed(chain.request().newBuilder()
                 .header("AppID", Constant.getSdkAppID())
                 .header("UserId", Constant.getUserId())
+                .header("token", null == Constant.getToken() ? "" : Constant.getToken())
                 .addHeader("Version", BuildConfig.versionName)
-                .addHeader("OsType", "1")
+                .addHeader("OsType", String.valueOf(OsType.ANDROID.type()))
                 .build());
     }
 }

+ 16 - 3
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/bean/PacketMessage.java

@@ -11,12 +11,17 @@ public abstract class PacketMessage {
      */
     private String msgId = UUID.randomUUID().toString();
     private PacketType packetType;
-    private long timestamp = System.currentTimeMillis();
-    private String appId = Constant.getSdkAppID();
-    private String userName = Constant.getUserId();
+    private long timestamp;
+    private String appId;
+    private String userName;
+    private String token;
 
     public PacketMessage(PacketType packetType) {
         this.packetType = packetType;
+        this.timestamp = System.currentTimeMillis();
+        this.appId = Constant.getSdkAppID();
+        this.userName = Constant.getUserId();
+        this.token = Constant.getToken();
     }
 
     public String getMsgId() {
@@ -27,6 +32,14 @@ public abstract class PacketMessage {
         this.msgId = msgId;
     }
 
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
     public PacketType getPacketType() {
         return packetType;
     }

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

@@ -108,8 +108,8 @@ public class ImManager implements IMInterface {
 
         if (null == connectOptions) connectOptions = new MqttConnectOptions();
         connectOptions.setCleanSession(false);
-        connectOptions.setUserName(imConnectOptions.getClientId());
-        connectOptions.setPassword(imConnectOptions.getToken().toCharArray());
+        connectOptions.setUserName(imConnectOptions.getToken());
+        connectOptions.setPassword(imConnectOptions.getPassword().toCharArray());
         connectOptions.setConnectionTimeout(30);
         connectOptions.setKeepAliveInterval(20);
         connectOptions.setAutomaticReconnect(true);
@@ -117,7 +117,7 @@ public class ImManager implements IMInterface {
 
         try {
             mqttClient = new MqttClient("tcp://" + imConnectOptions.getHost() + ":" + imConnectOptions.getPort(),
-                    Constant.getSdkAppID() + imConnectOptions.getClientId() + System.currentTimeMillis(), new MemoryPersistence());
+                    Constant.getSdkAppID() + imConnectOptions.getToken() + System.currentTimeMillis(), new MemoryPersistence());
             mqttClient.setCallback(new MqttCallbackExtended() {
                 @Override
                 public void connectComplete(boolean reconnect, String serverURI) {

+ 1 - 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/UserManager.java

@@ -28,6 +28,7 @@ public class UserManager {
     public void setUserInfo(UserInfo userInfo) {
         this.userInfo = userInfo;
         UserInfo u = new UserInfo();
+        u.setToken(userInfo.getToken());
         u.setUserId(userInfo.getUserId());
         u.setGender(userInfo.getGender());
         u.setNickName(userInfo.getNickName());

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

@@ -1,5 +1,7 @@
 package cn.org.bjca.trust.android.lib.im.im.msg;
 
+import androidx.annotation.NonNull;
+
 import cn.org.bjca.trust.android.lib.im.bean.UserInfo;
 import cn.org.bjca.trust.android.lib.im.enums.MsgType;
 import cn.org.bjca.trust.android.lib.im.enums.PacketType;
@@ -118,4 +120,19 @@ public class SZYXMessage extends PacketMessage {
         this.textMessage = textMessage;
     }
 
+    @NonNull
+    @Override
+    public String toString() {
+        return "SZYXMessage{" +
+                "fromClient=" + fromClient +
+                ", toClientId='" + toClientId + '\'' +
+                ", groupID='" + groupID + '\'' +
+                ", describe='" + describe + '\'' +
+                ", isGroup=" + isGroup +
+                ", isArrive=" + isArrive +
+                ", status=" + status +
+                ", msgType=" + msgType +
+                ", textMessage=" + textMessage +
+                '}';
+    }
 }

+ 7 - 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXTextMessage.java

@@ -14,4 +14,11 @@ public class SZYXTextMessage {
     public void setText(String text) {
         this.text = text;
     }
+
+    @Override
+    public String toString() {
+        return "SZYXTextMessage{" +
+                "text='" + text + '\'' +
+                '}';
+    }
 }

+ 11 - 11
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/opt/ImConnectOptions.java

@@ -3,14 +3,14 @@ package cn.org.bjca.trust.android.lib.im.im.opt;
 public class ImConnectOptions {
     private String host;
     private String port;
-    private String clientId;
     private String token;
+    private String password;
 
-    public ImConnectOptions(String host, String port, String clientId, String token) {
+    public ImConnectOptions(String host, String port, String token, String password) {
         this.host = host;
         this.port = port;
-        this.clientId = clientId;
         this.token = token;
+        this.password = password;
     }
 
     public String getHost() {
@@ -29,14 +29,6 @@ public class ImConnectOptions {
         this.port = port;
     }
 
-    public String getClientId() {
-        return clientId;
-    }
-
-    public void setClientId(String clientId) {
-        this.clientId = clientId;
-    }
-
     public String getToken() {
         return token;
     }
@@ -44,4 +36,12 @@ public class ImConnectOptions {
     public void setToken(String token) {
         this.token = token;
     }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
 }

+ 4 - 3
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java

@@ -63,15 +63,16 @@ public class SZYXImManager implements SdkInterface {
                         if (null != imsdkListener) imsdkListener.onConnecting();
                         LoginBean bean = httpResult.getData();
                         UserManager.getInstance().setUserInfo(bean.getUserInfo());
-                        imLogin(bean.getHost(), bean.getPort(), bean.getUserInfo().getUserName(), bean.getUserInfo().getPassword());
+                        Constant.setToken(bean.getUserInfo().getToken());
+                        imLogin(bean.getHost(), bean.getPort(), bean.getUserInfo().getToken(), bean.getUserInfo().getPassword());
                     } else if (null != callback) callback.failed(1001, httpResult.getMsg());
                 }, throwable -> {
                     if (null != callback) callback.failed(1001, throwable.getMessage());
                 });
     }
 
-    private void imLogin(String host, String port, String clientId, String token) {
-        IMHelper.getInstance().login(new ImConnectOptions(host, port, clientId, token));
+    private void imLogin(String host, String port, String token, String password) {
+        IMHelper.getInstance().login(new ImConnectOptions(host, port, token, password));
     }
 
     @Override

+ 1 - 1
app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java

@@ -29,7 +29,7 @@ public class ChatActivity extends BaseActivity<ActivityChatBinding> {
         getBinding().btnSend.setOnClickListener(v -> {
             String msg = getBinding().et.getText().toString();
             if (!ToolsHelper.isNull(msg)) {
-                SZYXImSdk.getInstance().sendMsgForTextToC(userId, "hello world", new IMSDKCallback() {
+                SZYXImSdk.getInstance().sendMsgForTextToC(userId, msg, new IMSDKCallback() {
                     @Override
                     public void success() {
                         ToolsHelper.showMessage("发送消息成功");

+ 24 - 3
app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/login/LoginActivity.java

@@ -1,7 +1,9 @@
 package cn.org.bjca.trust.android.imdemo.ui.login;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
@@ -21,6 +23,8 @@ import androidx.appcompat.app.AppCompatActivity;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
 
+import com.xuqm.base.common.ToolsHelper;
+
 import cn.org.bjca.trust.android.imdemo.databinding.ActivityLoginBinding;
 import cn.org.bjca.trust.android.imdemo.ui.MainActivity;
 import cn.org.bjca.trust.android.lib.im.SZYXImSdk;
@@ -116,12 +120,24 @@ public class LoginActivity extends AppCompatActivity {
                 loadingProgressBar.setVisibility(View.VISIBLE);
                 loginViewModel.login(usernameEditText.getText().toString(),
                         passwordEditText.getText().toString());
+
+                SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
+                SharedPreferences.Editor editor = sharedPref.edit();
+                editor.putString("username", usernameEditText.getText().toString());
+                editor.putString("password", passwordEditText.getText().toString());
+                editor.apply();
             }
         });
 
-        loadingProgressBar.setVisibility(View.VISIBLE);
-//        loginViewModel.login(usernameEditText.getText().toString(),
-//                passwordEditText.getText().toString());
+        SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
+        String u = sharedPref.getString("username", "");
+        String p = sharedPref.getString("password", "");
+
+        if (!ToolsHelper.isNull(u) && !ToolsHelper.isNull(p)) {
+            loadingProgressBar.setVisibility(View.VISIBLE);
+            loginViewModel.login(u,p);
+        }
+
     }
 
     private void updateUiWithUser(LoggedInUserView model) {
@@ -144,6 +160,11 @@ public class LoginActivity extends AppCompatActivity {
     }
 
     private void showLoginFailed(@StringRes Integer errorString) {
+        SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = sharedPref.edit();
+        editor.putString("username", "");
+        editor.putString("password", "");
+        editor.apply();
         Toast.makeText(getApplicationContext(), errorString, Toast.LENGTH_SHORT).show();
     }
 }