Przeglądaj źródła

request请求

master
徐勤民 1 rok temu
rodzic
commit
7eb33aae86
20 zmienionych plików z 705 dodań i 14 usunięć
  1. +1
    -8
      SzyxImSdk/build.gradle
  2. +11
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/SZYXImSdk.java
  3. +270
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/common/ToolsHelper.java
  4. +11
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/bean/PacketMessage.java
  5. +9
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/kit/RequestImCallback.java
  6. +63
    -3
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java
  7. +40
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/RequestMessage.java
  8. +48
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/ResultMessage.java
  9. +4
    -3
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMInterface.java
  10. +15
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkGroupInterface.java
  11. +80
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXGroupManager.java
  12. +3
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/repository/Service.java
  13. +39
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/repository/group/GroupCreateData.java
  14. +12
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestCallback.java
  15. +5
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestConstant.java
  16. +12
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestHelper.java
  17. +5
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestInterface.java
  18. +55
    -0
      SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestManager.java
  19. +1
    -0
      app/build.gradle
  20. +21
    -0
      app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/FriendsActivity.java

+ 1
- 8
SzyxImSdk/build.gradle Wyświetl plik

@@ -20,13 +20,6 @@ android {
}

buildTypes {
debug {
// 开启混淆
minifyEnabled false
// Zipalign压缩优化
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
// 开启混淆
minifyEnabled true
@@ -43,7 +36,7 @@ android {

dependencies {

implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.5.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'


+ 11
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/SZYXImSdk.java Wyświetl plik

@@ -1,7 +1,9 @@
package cn.org.bjca.trust.android.lib.im;

import cn.org.bjca.trust.android.lib.im.kit.SdkGroupInterface;
import cn.org.bjca.trust.android.lib.im.kit.SdkInterface;
import cn.org.bjca.trust.android.lib.im.kit.SdkMsgInterface;
import cn.org.bjca.trust.android.lib.im.manager.SZYXGroupManager;
import cn.org.bjca.trust.android.lib.im.manager.SZYXImManager;
import cn.org.bjca.trust.android.lib.im.manager.SZYXMessageManager;

@@ -15,6 +17,10 @@ public class SZYXImSdk {
static final SdkMsgInterface instance = new SZYXMessageManager();
}

private static final class SdkGroupInterfaceHolder {
static final SdkGroupInterface instance = new SZYXGroupManager();
}

public static SdkInterface getInstance() {
return SdkInterfaceHolder.instance;

@@ -24,4 +30,9 @@ public class SZYXImSdk {
return SdkMsgInterfaceHolder.instance;

}

public static SdkGroupInterface getGroupManager() {
return SdkGroupInterfaceHolder.instance;

}
}

+ 270
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/common/ToolsHelper.java Wyświetl plik

@@ -0,0 +1,270 @@
package cn.org.bjca.trust.android.lib.im.common;

import android.content.Context;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.textfield.TextInputLayout;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class ToolsHelper {

public static boolean isNull(Object obj) {
if (null == obj)
return true;
String str = obj.toString();
if (str.isEmpty())
return true;
return str.equalsIgnoreCase("null");
}

public static Long toLong(Object obj) {
if (isNull(obj))
return 0L;
try {
return Long.parseLong(obj.toString());
} catch (Exception e) {
return 0L;
}
}

public static int toInt(Object obj) {
if (isNull(obj))
return 0;
try {
return Integer.parseInt(obj.toString());
} catch (Exception e) {
return 0;
}
}

public static Double toDouble(Object obj) {
if (isNull(obj))
return 0.0;
try {
return Double.parseDouble(obj.toString());
} catch (Exception e) {
return 0D;
}
}

public static String toString(Object obj) {
if (isNull(obj))
return "";
return obj.toString();
}


/**
* 格式化json字符串
*
* @param jsonStr 需要格式化的json串
* @return 格式化后的json串
*/
public static String formatJson(String jsonStr) {
if (null == jsonStr || "".equals(jsonStr)) return "";
StringBuilder sb = new StringBuilder();
char last = '\0';
char current = '\0';
int indent = 0;
for (int i = 0; i < jsonStr.length(); i++) {
last = current;
current = jsonStr.charAt(i);
//遇到{ [换行,且下一行缩进
switch (current) {
case '{':
case '[':
sb.append(current);
sb.append('\n');
indent++;
addIndentBlank(sb, indent);
break;
//遇到} ]换行,当前行缩进
case '}':
case ']':
sb.append('\n');
indent--;
addIndentBlank(sb, indent);
sb.append(current);
break;
//遇到,换行
case ',':
sb.append(current);
if (last != '\\') {
sb.append('\n');
addIndentBlank(sb, indent);
}
break;
default:
sb.append(current);
}
}
return sb.toString();
}

/**
* 添加space
*/
private static void addIndentBlank(StringBuilder sb, int indent) {
for (int i = 0; i < indent; i++) {
sb.append('\t');
}
}

/**
* http 请求数据返回 json 中中文字符为 unicode 编码转汉字转码
*
* @param theString
* @return 转化后的结果.
*/
public static String decodeUnicode(String theString) {
char aChar;
int len = theString.length();
StringBuilder outBuffer = new StringBuilder(len);
for (int x = 0; x < len; ) {
aChar = theString.charAt(x++);
if (aChar == '\\') {
aChar = theString.charAt(x++);
if (aChar == 'u') {
int value = 0;
for (int i = 0; i < 4; i++) {
aChar = theString.charAt(x++);
switch (aChar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value = (value << 4) + aChar - '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value = (value << 4) + 10 + aChar - 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value = (value << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}

}
outBuffer.append((char) value);
} else {
if (aChar == 't') {
aChar = '\t';
} else if (aChar != 'r') {
if (aChar == 'n') {
aChar = '\n';
} else if (aChar == 'f') {
aChar = '\f';
}
} else {
aChar = '\r';
}
outBuffer.append(aChar);
}
} else {
outBuffer.append(aChar);
}
}
return outBuffer.toString();
}

/**
* 弹出提示信息 感觉比Toast好看点 不过Toast不需要依赖view
*
* @param view 绑定一个view才能展示
* @param content 需要展示的内容
*/
public static void snack(View view, CharSequence content) {
Snackbar.make(view, content, Snackbar.LENGTH_SHORT).show();
}

public static void showMessage(Context context, CharSequence content) {
Toast.makeText(context, content, Toast.LENGTH_SHORT).show();
}

/**
* EditText绑定TextInputLayout,处理一下
*
* @param editText editText
* @param textInputLayout textInputLayout
*/
public static void addTextChangedListener(EditText editText, TextInputLayout textInputLayout) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Override
public void afterTextChanged(Editable s) {
if (!TextUtils.isEmpty(textInputLayout.getError())) {//输入的时候不提示错误信息
textInputLayout.setErrorEnabled(true);
textInputLayout.setError("");
textInputLayout.setErrorEnabled(false);
}
}
});
}

/**
* 使用 TextInputLayout 提示错误信息
*
* @param textInputLayout TextInputLayout
* @param msg 错判的内容
*/
public static void showError(TextInputLayout textInputLayout, String msg) {
textInputLayout.setErrorEnabled(true);
textInputLayout.setError(msg);
}

/**
* 将Object对象里面的属性和值转化成Map对象
*
* @param obj
* @return
* @throws IllegalAccessException
*/
public static <T> Map<String, T> objectToMap(Object obj) throws IllegalAccessException {
Map<String, T> map = new HashMap<>();
Class<?> clazz = obj.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
T value = (T) field.get(obj);
if (null != value)
map.put(fieldName, value);
}
return map;
}
}

+ 11
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/bean/PacketMessage.java Wyświetl plik

@@ -3,6 +3,7 @@ package cn.org.bjca.trust.android.lib.im.im.bean;
import java.util.UUID;

import cn.org.bjca.trust.android.lib.im.cfg.Constant;
import cn.org.bjca.trust.android.lib.im.enums.OsType;
import cn.org.bjca.trust.android.lib.im.enums.PacketType;

public abstract class PacketMessage {
@@ -15,6 +16,7 @@ public abstract class PacketMessage {
private String appId;
private String userName;
private String token;
private String osType;

public PacketMessage(PacketType packetType) {
this.packetType = packetType;
@@ -22,6 +24,15 @@ public abstract class PacketMessage {
this.appId = Constant.getSdkAppID();
this.userName = Constant.getUserId();
this.token = Constant.getToken();
this.osType = String.valueOf(OsType.ANDROID.type());
}

public String getOsType() {
return osType;
}

public void setOsType(String osType) {
this.osType = osType;
}

public String getMsgId() {


+ 9
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/kit/RequestImCallback.java Wyświetl plik

@@ -0,0 +1,9 @@
package cn.org.bjca.trust.android.lib.im.im.kit;

import cn.org.bjca.trust.android.lib.im.im.msg.ResultMessage;

public interface RequestImCallback {
void success(ResultMessage message);

void failed(int code, String error);
}

+ 63
- 3
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java Wyświetl plik

@@ -23,17 +23,22 @@ import java.util.Map;

import cn.org.bjca.trust.android.lib.im.cfg.Constant;
import cn.org.bjca.trust.android.lib.im.common.DeviceHelper;
import cn.org.bjca.trust.android.lib.im.common.ToolsHelper;
import cn.org.bjca.trust.android.lib.im.common.json.GsonImplHelp;
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.http.HttpResult;
import cn.org.bjca.trust.android.lib.im.im.bean.PacketMessage;
import cn.org.bjca.trust.android.lib.im.kit.IMInterface;
import cn.org.bjca.trust.android.lib.im.im.kit.RequestImCallback;
import cn.org.bjca.trust.android.lib.im.im.msg.ConnectMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.ConnectedMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.RequestMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.ResultMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.SendAckMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXTextMessage;
import cn.org.bjca.trust.android.lib.im.im.opt.ImConnectOptions;
import cn.org.bjca.trust.android.lib.im.kit.IMInterface;
import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
import cn.org.bjca.trust.android.lib.im.kit.IMSDKListener;
import cn.org.bjca.trust.android.lib.im.kit.MsgListener;
@@ -70,6 +75,7 @@ public class ImManager implements IMInterface {

private final List<MsgListener> msgListeners = new ArrayList<>();
private final Map<String, IMSDKCallback> msgListenerMap = new HashMap<>();
private final Map<String, RequestImCallback> requestMap = new HashMap<>();


@Override
@@ -169,6 +175,16 @@ public class ImManager implements IMInterface {
handler.sendMessage(m);

}
// 接口请求应答
else if (topic.equals(topic_result)) {
ResultMessage resultMessage = GsonImplHelp.get().toObject(msg, ResultMessage.class);

Message m = new Message();
m.obj = resultMessage;
m.what = 10004;
handler.sendMessage(m);

}
// 新消息送达
else if (topic.equals(topic_arrive)) {
SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class);
@@ -262,7 +278,34 @@ public class ImManager implements IMInterface {

@Override
public void sendSZYXMessage(SZYXMessage message, IMSDKCallback callback) {
sendPacketMessage(PacketType.SEND, message, callback);
if (ToolsHelper.isNull(message.getToClientId())) {
if (null != callback) callback.failed(202, "没有消息接收者[toClientId]");
for (MsgListener listener : msgListeners) {
listener.statusChange(message.getMsgId(), -1);
}
} else
sendPacketMessage(PacketType.SEND, message, callback);
}

@Override
public void request(RequestMessage message, RequestImCallback callback) {
this.sendPacketMessage(PacketType.REQUEST, message, new IMSDKCallback() {
@Override
public void success() {

}

@Override
public void failed(int code, String error) {
callback.failed(4001, error);
}
});

requestMap.put(message.getMsgId(), callback);
Message m = new Message();
m.obj = message.getMsgId();
m.what = 10003;
handler.sendMessageDelayed(m, 600);
}

private void sendConnectMsg() {
@@ -347,6 +390,23 @@ public class ImManager implements IMInterface {
msgListenerMap.remove(msgId1);
}
break;
case 10003:
String msgId3 = (String) msg.obj;
RequestImCallback imCallback = requestMap.get(msgId3);
if (null != imCallback) {
imCallback.failed(4001, "发送超时");
requestMap.remove(msgId3);
}
break;
case 10004:
ResultMessage resultMessage = (ResultMessage) msg.obj;
String msgId4 = resultMessage.getAckId();
RequestImCallback callback4 = requestMap.get(msgId4);
if (null != callback4) {
callback4.success(resultMessage);
requestMap.remove(msgId4);
}
break;
}
}
};


+ 40
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/RequestMessage.java Wyświetl plik

@@ -0,0 +1,40 @@
package cn.org.bjca.trust.android.lib.im.im.msg;

import cn.org.bjca.trust.android.lib.im.enums.PacketType;
import cn.org.bjca.trust.android.lib.im.im.bean.PacketMessage;

public class RequestMessage extends PacketMessage {
public RequestMessage() {
super(PacketType.REQUEST);
}

private String path;
private String body;

public RequestMessage(String path) {
super(PacketType.REQUEST);
this.path = path;
}

public RequestMessage(String path, String body) {
super(PacketType.REQUEST);
this.path = path;
this.body = body;
}

public String getPath() {
return path;
}

public void setPath(String path) {
this.path = path;
}

public String getBody() {
return body;
}

public void setBody(String body) {
this.body = body;
}
}

+ 48
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/ResultMessage.java Wyświetl plik

@@ -0,0 +1,48 @@
package cn.org.bjca.trust.android.lib.im.im.msg;


import cn.org.bjca.trust.android.lib.im.enums.PacketType;
import cn.org.bjca.trust.android.lib.im.im.bean.PacketMessage;

public class ResultMessage extends PacketMessage {
public ResultMessage() {
super(PacketType.RESULT);
}

private String path;
private String body;
private String ackId;

public String getPath() {
return path;
}

public void setPath(String path) {
this.path = path;
}

public String getBody() {
return body;
}

public void setBody(String body) {
this.body = body;
}

public String getAckId() {
return ackId;
}

public void setAckId(String ackId) {
this.ackId = ackId;
}

@Override
public String toString() {
return "ResultMessage{" +
"path='" + path + '\'' +
", body='" + body + '\'' +
", ackId='" + ackId + '\'' +
'}';
}
}

+ 4
- 3
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMInterface.java Wyświetl plik

@@ -1,11 +1,10 @@
package cn.org.bjca.trust.android.lib.im.kit;

import cn.org.bjca.trust.android.lib.im.enums.MsgType;
import cn.org.bjca.trust.android.lib.im.im.kit.RequestImCallback;
import cn.org.bjca.trust.android.lib.im.im.msg.RequestMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
import cn.org.bjca.trust.android.lib.im.im.opt.ImConnectOptions;
import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
import cn.org.bjca.trust.android.lib.im.kit.IMSDKListener;
import cn.org.bjca.trust.android.lib.im.kit.MsgListener;

public interface IMInterface {
void addMsgListener(MsgListener listener);
@@ -26,6 +25,8 @@ public interface IMInterface {

void sendSZYXMessage(SZYXMessage message, IMSDKCallback callback);

<T> void request(RequestMessage message, RequestImCallback callback);

SZYXMessage createMsg(MsgType msgType, String toUserId, boolean isGroup, Object message, String describe);

}

+ 15
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkGroupInterface.java Wyświetl plik

@@ -0,0 +1,15 @@
package cn.org.bjca.trust.android.lib.im.kit;

import java.util.List;

public interface SdkGroupInterface {


void create(List<String> userList, IMSDKCallback callback);

void create(String groupName, List<String> userList, IMSDKCallback callback);

void create(String groupName, List<String> userList, String faceUrl, IMSDKCallback callback);


}

+ 80
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXGroupManager.java Wyświetl plik

@@ -0,0 +1,80 @@
package cn.org.bjca.trust.android.lib.im.manager;

import static cn.org.bjca.trust.android.lib.im.request.RequestConstant.Group_create_v1;

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;

import androidx.annotation.NonNull;

import java.util.List;

import cn.org.bjca.trust.android.lib.im.http.HttpManage;
import cn.org.bjca.trust.android.lib.im.http.HttpResult;
import cn.org.bjca.trust.android.lib.im.im.msg.SendAckMessage;
import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
import cn.org.bjca.trust.android.lib.im.kit.MsgListener;
import cn.org.bjca.trust.android.lib.im.kit.SdkGroupInterface;
import cn.org.bjca.trust.android.lib.im.repository.Service;
import cn.org.bjca.trust.android.lib.im.repository.group.GroupCreateData;
import cn.org.bjca.trust.android.lib.im.request.RequestCallback;
import cn.org.bjca.trust.android.lib.im.request.RequestHelper;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

public class SZYXGroupManager implements SdkGroupInterface {


@Override
public void create(List<String> userList, IMSDKCallback callback) {
this.create(null, userList, null, callback);
}

@Override
public void create(String groupName, List<String> userList, IMSDKCallback callback) {
this.create(groupName, userList, null, callback);
}

@Override
public void create(String groupName, List<String> userList, String faceUrl, IMSDKCallback callback) {
if (null == userList || userList.size() < 2) {
if (null != callback) callback.failed(2001, "群成员需要大于一个");
return;
}
GroupCreateData data = new GroupCreateData(groupName, faceUrl, userList);
RequestHelper.getInstance().request(Group_create_v1, data, new RequestCallback<String>() {

@Override
public void success(HttpResult<String> result) {
if (null != callback) callback.success();
}

@Override
public void failed(int code, String error) {
if (null != callback) callback.failed(code, error);
}

@Override
public void standby(RequestCallback<String> imCallback) {

Disposable d = HttpManage.getApi(Service.class)
.groupCreate(data)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(httpResult -> {
if (httpResult.getCode() == 200) {
imCallback.success(httpResult);
} else
imCallback.failed(httpResult.getCode(), httpResult.getMsg());
}, throwable -> {
imCallback.failed(4002, throwable.getMessage());
});
}

});
}

}

+ 3
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/repository/Service.java Wyświetl plik

@@ -4,6 +4,7 @@ import cn.org.bjca.trust.android.lib.im.bean.UserInfo;
import cn.org.bjca.trust.android.lib.im.http.HttpResult;
import cn.org.bjca.trust.android.lib.im.repository.bean.LoginBean;
import cn.org.bjca.trust.android.lib.im.repository.data.LoginData;
import cn.org.bjca.trust.android.lib.im.repository.group.GroupCreateData;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
@@ -17,4 +18,6 @@ public interface Service {

@POST("user/v1/register")
Observable<HttpResult<LoginBean>> register(@Body LoginData loginData);
@POST("group/v1/create")
Observable<HttpResult<String>> groupCreate(@Body GroupCreateData data);
}

+ 39
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/repository/group/GroupCreateData.java Wyświetl plik

@@ -0,0 +1,39 @@
package cn.org.bjca.trust.android.lib.im.repository.group;

import java.util.List;

public class GroupCreateData {
private String groupName;
private String faceUrl;
private List<String> userIdList;

public GroupCreateData(String groupName, String faceUrl, List<String> userIdList) {
this.groupName = groupName;
this.faceUrl = faceUrl;
this.userIdList = userIdList;
}

public String getGroupName() {
return groupName;
}

public void setGroupName(String groupName) {
this.groupName = groupName;
}

public String getFaceUrl() {
return faceUrl;
}

public void setFaceUrl(String faceUrl) {
this.faceUrl = faceUrl;
}

public List<String> getUserIdList() {
return userIdList;
}

public void setUserIdList(List<String> userIdList) {
this.userIdList = userIdList;
}
}

+ 12
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestCallback.java Wyświetl plik

@@ -0,0 +1,12 @@
package cn.org.bjca.trust.android.lib.im.request;

import cn.org.bjca.trust.android.lib.im.http.HttpResult;
import cn.org.bjca.trust.android.lib.im.im.kit.RequestImCallback;

public interface RequestCallback<T> {
void success(HttpResult<T> result);

void failed(int code, String error);

void standby(RequestCallback<T> imCallback);
}

+ 5
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestConstant.java Wyświetl plik

@@ -0,0 +1,5 @@
package cn.org.bjca.trust.android.lib.im.request;

public class RequestConstant {
public static final String Group_create_v1 = "/group/v1/create";
}

+ 12
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestHelper.java Wyświetl plik

@@ -0,0 +1,12 @@
package cn.org.bjca.trust.android.lib.im.request;

public class RequestHelper {
private static final class RequestHelperHolder {
static final RequestInterface instance = new RequestManager();
}

public static RequestInterface getInstance() {
return RequestHelperHolder.instance;

}
}

+ 5
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestInterface.java Wyświetl plik

@@ -0,0 +1,5 @@
package cn.org.bjca.trust.android.lib.im.request;

public interface RequestInterface {
<T> void request(String path, Object data, RequestCallback<T> callback);
}

+ 55
- 0
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/request/RequestManager.java Wyświetl plik

@@ -0,0 +1,55 @@
package cn.org.bjca.trust.android.lib.im.request;

import cn.org.bjca.trust.android.lib.im.common.json.GsonImplHelp;
import cn.org.bjca.trust.android.lib.im.http.HttpResult;
import cn.org.bjca.trust.android.lib.im.im.IMHelper;
import cn.org.bjca.trust.android.lib.im.im.kit.RequestImCallback;
import cn.org.bjca.trust.android.lib.im.im.msg.RequestMessage;
import cn.org.bjca.trust.android.lib.im.im.msg.ResultMessage;

public class RequestManager implements RequestInterface {


public <T> void request(String path, Object data, RequestCallback<T> callback) {

RequestMessage rm = new RequestMessage(path, GsonImplHelp.get().toJson(data));

IMHelper.getInstance().request(rm, new RequestImCallback() {

@Override
public void success(ResultMessage message) {
HttpResult<T> h = GsonImplHelp.get().toObject(message.getBody(), HttpResult.class);
if (h.getCode() == 200) {
callback.success(h);
} else {
callback.failed(h.getCode(), h.getMsg());
}
}

@Override
public void failed(int code, String error) {
if (null != callback) {
callback.standby(new RequestCallback<T>() {
@Override
public void success(HttpResult<T> result) {
callback.success(result);
}

@Override
public void failed(int code, String error) {
callback.failed(code, error);
}

@Override
public void standby(RequestCallback<T> imCallback) {

}
});

}
}

});
}

}

+ 1
- 0
app/build.gradle Wyświetl plik

@@ -21,6 +21,7 @@ android {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
compileOptions {


+ 21
- 0
app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/FriendsActivity.java Wyświetl plik

@@ -7,11 +7,17 @@ import android.view.View;
import com.xuqm.base.adapter.BasePagedAdapter;
import com.xuqm.base.adapter.CommonPagedAdapter;
import com.xuqm.base.adapter.ViewHolder;
import com.xuqm.base.common.LogHelper;
import com.xuqm.base.ui.BaseListActivity;

import java.util.ArrayList;

import cn.org.bjca.trust.android.imdemo.R;
import cn.org.bjca.trust.android.imdemo.data.item.UserItem;
import cn.org.bjca.trust.android.imdemo.vm.FriendsVM;
import cn.org.bjca.trust.android.lib.im.SZYXImSdk;
import cn.org.bjca.trust.android.lib.im.common.ToolsHelper;
import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;

public class FriendsActivity extends BaseListActivity<UserItem, FriendsVM> {
@Override
@@ -19,7 +25,22 @@ public class FriendsActivity extends BaseListActivity<UserItem, FriendsVM> {
super.initView(savedInstanceState);
setTitleText("好友列表");
setConfirmText("添加好友", v -> {
SZYXImSdk.getGroupManager().create(new ArrayList<String>() {{
add("13666666666");
add("13811111111");
}
}, new IMSDKCallback() {
@Override
public void success() {
ToolsHelper.showMessage(mContext, "创建成功");
}

@Override
public void failed(int code, String error) {
ToolsHelper.showMessage(mContext, "创建失败" + code + error);
LogHelper.e("=====>", "创建失败" + code + error);
}
});
});
}



Ładowanie…
Anuluj
Zapisz