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