发送消息绑定用户信息

这个提交包含在:
xuqm 2023-05-31 19:12:48 +08:00
父节点 b323e3e248
当前提交 7254ff441a
共有 13 个文件被更改,包括 130 次插入30 次删除

查看文件

@ -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() {

查看文件

@ -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;
}
}

查看文件

@ -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;
}
}

查看文件

@ -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());
}
}

查看文件

@ -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;
}

查看文件

@ -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) {

查看文件

@ -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());

查看文件

@ -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 +
'}';
}
}

查看文件

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

查看文件

@ -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;
}
}

查看文件

@ -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

查看文件

@ -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("发送消息成功");

查看文件

@ -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();
}
}