@@ -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() { | ||||
@@ -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; | |||||
} | |||||
} | } |
@@ -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.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()); | ||||
} | } | ||||
} | } |
@@ -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; | ||||
} | } | ||||
@@ -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) { | ||||
@@ -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()); | ||||
@@ -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 + | |||||
'}'; | |||||
} | |||||
} | } |
@@ -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 + '\'' + | |||||
'}'; | |||||
} | |||||
} | } |
@@ -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; | |||||
} | |||||
} | } |
@@ -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 | ||||
@@ -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("发送消息成功"); | ||||
@@ -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(); | ||||
} | } | ||||
} | } |