Browse Source

发送消息绑定用户信息

master
徐勤民 1 year ago
parent
commit
7254ff441a
13 changed files with 130 additions and 30 deletions
  1. +5
    -5
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/UserInfo.java
  2. +9
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/cfg/Constant.java
  3. +29
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/enums/OsType.java
  4. +3
    -1
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/http/HeaderInterceptor.java
  5. +16
    -3
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/bean/PacketMessage.java
  6. +3
    -3
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java
  7. +1
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/UserManager.java
  8. +17
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java
  9. +7
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXTextMessage.java
  10. +11
    -11
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/opt/ImConnectOptions.java
  11. +4
    -3
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java
  12. +1
    -1
      app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java
  13. +24
    -3
      app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/login/LoginActivity.java

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

@@ -2,7 +2,7 @@ package cn.org.bjca.trust.android.lib.im.bean;


public class UserInfo { public class UserInfo {
private String userId; private String userId;
private String userName;
private String token;
private String password; private String password;
private String appId; private String appId;
private String osType; private String osType;
@@ -18,12 +18,12 @@ public class UserInfo {
this.userId = userId; 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() { public String getPassword() {


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

@@ -7,6 +7,7 @@ public class Constant {


private static String sdkAppID; private static String sdkAppID;
private static String userId; private static String userId;
private static String token;


public static void setSdkAppID(String sdkAppID) { public static void setSdkAppID(String sdkAppID) {
Constant.sdkAppID = sdkAppID; Constant.sdkAppID = sdkAppID;
@@ -23,4 +24,12 @@ public class Constant {
public static void setUserId(String userId) { public static void setUserId(String userId) {
Constant.userId = 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 View File

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

@@ -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.BuildConfig;
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.enums.OsType;
import okhttp3.Interceptor; import okhttp3.Interceptor;
import okhttp3.Response; import okhttp3.Response;


@@ -17,8 +18,9 @@ public class HeaderInterceptor implements Interceptor {
return chain.proceed(chain.request().newBuilder() return chain.proceed(chain.request().newBuilder()
.header("AppID", Constant.getSdkAppID()) .header("AppID", Constant.getSdkAppID())
.header("UserId", Constant.getUserId()) .header("UserId", Constant.getUserId())
.header("token", null == Constant.getToken() ? "" : Constant.getToken())
.addHeader("Version", BuildConfig.versionName) .addHeader("Version", BuildConfig.versionName)
.addHeader("OsType", "1")
.addHeader("OsType", String.valueOf(OsType.ANDROID.type()))
.build()); .build());
} }
} }

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

@@ -11,12 +11,17 @@ public abstract class PacketMessage {
*/ */
private String msgId = UUID.randomUUID().toString(); private String msgId = UUID.randomUUID().toString();
private PacketType packetType; 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) { public PacketMessage(PacketType packetType) {
this.packetType = packetType; this.packetType = packetType;
this.timestamp = System.currentTimeMillis();
this.appId = Constant.getSdkAppID();
this.userName = Constant.getUserId();
this.token = Constant.getToken();
} }


public String getMsgId() { public String getMsgId() {
@@ -27,6 +32,14 @@ public abstract class PacketMessage {
this.msgId = msgId; this.msgId = msgId;
} }


public String getToken() {
return token;
}

public void setToken(String token) {
this.token = token;
}

public PacketType getPacketType() { public PacketType getPacketType() {
return packetType; return packetType;
} }


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

@@ -108,8 +108,8 @@ public class ImManager implements IMInterface {


if (null == connectOptions) connectOptions = new MqttConnectOptions(); if (null == connectOptions) connectOptions = new MqttConnectOptions();
connectOptions.setCleanSession(false); 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.setConnectionTimeout(30);
connectOptions.setKeepAliveInterval(20); connectOptions.setKeepAliveInterval(20);
connectOptions.setAutomaticReconnect(true); connectOptions.setAutomaticReconnect(true);
@@ -117,7 +117,7 @@ public class ImManager implements IMInterface {


try { try {
mqttClient = new MqttClient("tcp://" + imConnectOptions.getHost() + ":" + imConnectOptions.getPort(), 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() { mqttClient.setCallback(new MqttCallbackExtended() {
@Override @Override
public void connectComplete(boolean reconnect, String serverURI) { public void connectComplete(boolean reconnect, String serverURI) {


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

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


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

@@ -1,5 +1,7 @@
package cn.org.bjca.trust.android.lib.im.im.msg; 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.bean.UserInfo;
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;
@@ -118,4 +120,19 @@ public class SZYXMessage extends PacketMessage {
this.textMessage = textMessage; 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 View File

@@ -14,4 +14,11 @@ public class SZYXTextMessage {
public void setText(String text) { public void setText(String text) {
this.text = 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 View File

@@ -3,14 +3,14 @@ package cn.org.bjca.trust.android.lib.im.im.opt;
public class ImConnectOptions { public class ImConnectOptions {
private String host; private String host;
private String port; private String port;
private String clientId;
private String token; 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.host = host;
this.port = port; this.port = port;
this.clientId = clientId;
this.token = token; this.token = token;
this.password = password;
} }


public String getHost() { public String getHost() {
@@ -29,14 +29,6 @@ public class ImConnectOptions {
this.port = port; this.port = port;
} }


public String getClientId() {
return clientId;
}

public void setClientId(String clientId) {
this.clientId = clientId;
}

public String getToken() { public String getToken() {
return token; return token;
} }
@@ -44,4 +36,12 @@ public class ImConnectOptions {
public void setToken(String token) { public void setToken(String token) {
this.token = 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 View File

@@ -63,15 +63,16 @@ public class SZYXImManager implements SdkInterface {
if (null != imsdkListener) imsdkListener.onConnecting(); if (null != imsdkListener) imsdkListener.onConnecting();
LoginBean bean = httpResult.getData(); LoginBean bean = httpResult.getData();
UserManager.getInstance().setUserInfo(bean.getUserInfo()); 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()); } else if (null != callback) callback.failed(1001, httpResult.getMsg());
}, throwable -> { }, throwable -> {
if (null != callback) callback.failed(1001, throwable.getMessage()); 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 @Override


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

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


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

@@ -1,7 +1,9 @@
package cn.org.bjca.trust.android.imdemo.ui.login; package cn.org.bjca.trust.android.imdemo.ui.login;


import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
@@ -21,6 +23,8 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer; import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider; 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.databinding.ActivityLoginBinding;
import cn.org.bjca.trust.android.imdemo.ui.MainActivity; import cn.org.bjca.trust.android.imdemo.ui.MainActivity;
import cn.org.bjca.trust.android.lib.im.SZYXImSdk; import cn.org.bjca.trust.android.lib.im.SZYXImSdk;
@@ -116,12 +120,24 @@ public class LoginActivity extends AppCompatActivity {
loadingProgressBar.setVisibility(View.VISIBLE); loadingProgressBar.setVisibility(View.VISIBLE);
loginViewModel.login(usernameEditText.getText().toString(), loginViewModel.login(usernameEditText.getText().toString(),
passwordEditText.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) { private void updateUiWithUser(LoggedInUserView model) {
@@ -144,6 +160,11 @@ public class LoginActivity extends AppCompatActivity {
} }


private void showLoginFailed(@StringRes Integer errorString) { 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(); Toast.makeText(getApplicationContext(), errorString, Toast.LENGTH_SHORT).show();
} }
} }

Loading…
Cancel
Save