diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/UserInfo.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/UserInfo.java index 21180a3..d4de37d 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/UserInfo.java +++ b/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() { diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/cfg/Constant.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/cfg/Constant.java index 04dcfe8..755a5a8 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/cfg/Constant.java +++ b/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; + } } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/enums/OsType.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/enums/OsType.java new file mode 100644 index 0000000..184eae4 --- /dev/null +++ b/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; + } +} diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/http/HeaderInterceptor.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/http/HeaderInterceptor.java index 4363942..98f6074 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/http/HeaderInterceptor.java +++ b/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()); } } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/bean/PacketMessage.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/bean/PacketMessage.java index 6288b1f..72b8725 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/bean/PacketMessage.java +++ b/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; } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java index 5157da8..98328d8 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java +++ b/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) { diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/UserManager.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/UserManager.java index 8ff4474..0617591 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/UserManager.java +++ b/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()); diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java index aa2613a..b285dce 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java +++ b/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 + + '}'; + } } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXTextMessage.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXTextMessage.java index e8f8c2c..20c775d 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXTextMessage.java +++ b/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 + '\'' + + '}'; + } } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/opt/ImConnectOptions.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/opt/ImConnectOptions.java index b057318..d86629b 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/opt/ImConnectOptions.java +++ b/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; + } } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java index ef3f73a..3834bf7 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java +++ b/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 diff --git a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java index e92d16f..d1c0c34 100644 --- a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java +++ b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java @@ -29,7 +29,7 @@ public class ChatActivity extends BaseActivity { 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("发送消息成功"); diff --git a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/login/LoginActivity.java b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/login/LoginActivity.java index 749f737..c10ec51 100644 --- a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/login/LoginActivity.java +++ b/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(); } } \ No newline at end of file