开发者中心

名称: 上海璟梦信息科技有限公司 IM SDK 集成文档
版本: V1.2.1
日期: 2022-04-06

1.集成指南

1.1SDK集成

1.1.1 申请appid

1.1.2 导入jar包

1)  将jar包添加到工程libs目录

1.1.3 配置AndroidManifest.xml

1)添加SDK相关权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

1.1.4 添加混淆配置

-keep class com.chuanglan.** { *;}
-keep class com.network.okhttp.** { *;}
-keep class com.network.okio.** { *;}
-keep class org.apache.mina.** { *;}
-keep class com.google.protobuf.** { *;}
-keep class org.slf4j.** { *;}

2.接口调用

1.初始化

 /**
  * 初始化
  * 设置IM AppId、AppUserSecret
  *
  * @param appId 平台创建应用时生成
  * @param appUserSecret IM OpenApI创建账号时生成
  */
  CLIMSDK.getInstance().initWithAppId(String appId, String appUserSecret);

一、用户模块

1、登录

注意传入autoLogin参数的使用场景
登录成功后可通过BusinessDataStorage.getInstance().getAppToken()获取apptoken,用于实时音视频sdk登录

/**
*  登录
*
* @param appUserId 用户唯一Id(通过IM服务创建的账号Id)
* @param autoLogin 是否为自动登录 :
*             true - 使用场景:已登录用户重启应用时进行自动登录连接IM服务,登录失败后,需重新调用该登录接口,并传入true(如多设备登录后被踢下线、账号被后台禁用等失败场景)
*             false - 使用场景:在新设备上初次登录,以及被踢、切换账号与注销登录后下一次登录,需要使用手动登录。对应用户手动输入登录账号密码的场景。
* @param callback 返回登录信息
*/
CLIMSDK.getInstance().login(Context context, String appUserId, 
           boolean autoLogin, RequestCallback<CLLoginResp> callback);

示例

1、应用登录界面,autoLogin设置为false

private void login() {
	CLIMSDK.getInstance().login(getApplicationContext(), "IM appUserId", false, new RequestCallback<CLLoginResp>() {
		@Override
		public void onResult(CLLoginResp clLoginResp) {
			if (clLoginResp.getCode() == VideoConstants.SUCCESS) {
				Log.d(TAG, "登录成功 -onMessage: " + clLoginResp.toString());
				//TODO 关闭登录页面,跳转到主页面逻辑
			} else {
				int code = clLoginResp.getCode();
				String errorMsg = clLoginResp.getMsg();
				String logId = clLoginResp.getLogId();//服务端根据logId排查问题
				Log.d(TAG, "登录失败 -onMessage: code= " + code +" msg= " + errorMsg + " logId = " + logId);
			}
		}
		
		@Override
		public void onFail(int code, String errorMsg) {
			//通常为客户端错误,如:超时,appId、appUserId为空等
			Log.d(TAG, "登录失败 -onMessage: " + errorMsg);
		}
	});
}

2、已登录用户重启应用时进行自动登录,autoLogin设置为true

CLIMSDK.getInstance().login(this, SpUtils.getKeyLoginAppUserId(this), true, new RequestCallback<CLLoginResp>() {
  @Override
  public void onResult(CLLoginResp clLoginResp) {
    if (clLoginResp.getCode() == VideoConstants.SUCCESS) {
      Log.d(TAG, "自动登录成功 -onMessage: " + clLoginResp.toString());
      //TODO 登录成功,主界面逻辑正常执行
    } else {
      Log.d(TAG, "自动登录服务端失败 -onMessage: " + clLoginResp.getMsg());
      if (MessageCode.LoginError.valueOf(clLoginResp.getCode()) != MessageCode.LoginError.NOT_LOGIN_ERROR
          || MessageCode.ErrorCode.valueOf(clLoginResp.getCode()) != MessageCode.ErrorCode.UNKNOWN) {
        //TODO 退出到登录界面,用户进行手动输入登录操作  
      }
    }
  }
  
  @Override
  public void onFail(int code, String errorMsg) {
    Log.d(TAG, "自动登录失败 -onMessage: " + errorMsg);
    //当前自动登录失败 ,非400002错误sdk内部会尝试再次登录
    if(code == 400002) {
      //AppId or appUserId is null ,登录前需调用初始化接口
    }
});

2、登出

/**
* 登出账号
*/
CLIMSDK.getInstance().logout(RequestCallback<CLLogoutResp> callback);

示例

CLIMSDK.getInstance().logout(new RequestCallback<CLLogoutResp>() {
  @Override
  public void onResult(CLLogoutResp result) {
    if (result.getCode() != VideoConstants.SUCCESS) {
      //登出服务端失败,
      int code = result.getCode();
      String errorMsg = result.getCode();
      String logId = result.getLogId();//服务端根据logId排查问题
      Log.d(TAG, "登出失败 -onMessage: code= " + code +" msg= "
            + errorMsg + " logId = " + logId);
    }
    //TODO 应用退出登录后逻辑
  }
  
  @Override
  public void onFail(int code, String errorMsg) {
    //登出服务端失败,客户端原因,如网络异常,超时等
    Toast.makeText(getActivity(), "登出失败"+ errorMsg, Toast.LENGTH_SHORT).show();
    //TODO 应用退出登录后逻辑
  }
});

3、监听登录状态

/**
* 登录状态监听
*
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeLoggingState(RequestCallback<LoggingState> loginStateObserver, boolean register)

示例

//注册登录状态监听,可注册全局唯一监听,页面监听注意退出时注销
CLIMSDK.getInstance().observeLoggingState(loggingStateObserver, true);
//注销登录状态监听
CLIMSDK.getInstance().observeLoggingState(loggingStateObserver, false);

DefaultRequestCallback loggingStateObserver = new DefaultRequestCallback<LoggingState>() {
  @Override
  public void onResult(LoggingState result) {
    switch (result) {
      case CONNECTION_SUCCESS:
        Log.d("TAG", "连接成功,正在登录...");
        break;
      case CONNECTION_FAIL:
        Log.d("TAG", "连接失败,请检测网络");
        break;
      case CONNECTION_CREATE:
        Log.d("TAG", "建立连接中...");
        break;
      case CONNECTION_IDLE:
        Log.d("TAG", "连接休眠");
        break;
      case CONNECTION_OFF:
        Log.d("TAG", "连接被关闭");
        break;
      case LOGIN_SUCCESS:
        Log.d("TAG", "登录成功");
        break;
      case LOGIN_FAIL:
        Log.d("TAG", "登录失败");
        break;
    }
  }
}

4、修改用户信息

/**
* 修改用户信息
*
* @param clUserInfo 用户信息
*/
CLIMSDK.getInstance().modifyUserInfo(CLUserInfo clUserInfo, RequestCallback<CLModifyUserInfoResp> callback);

5、查找用户信息

/**
* 查询用户
*/
CLIMSDK.getInstance().findUserInfo(CLFindUserReq clFindUserReq, RequestCallback<CLFindUserResp> callback);

二、消息模块

1、构建消息体

/**
* 构建消息体
*
* @param sessionId 会话Id,单聊为好友userId,群聊为GroupId
* @param messageType 聊天类型:单聊、群聊
* @param contentType 消息类型:文本、语音、视频、自定义等
* @param ext 消息扩展内容: 自定义消息扩展内容集合
* @param targetAppUserId 群呼叫消息时指定参与的目标用户id
*
* @return 消息对象
*/
CLIMSDK.getInstance().buildBaseMessage(String sessionId, CLMessage.ChatMessageType messageType, CLMessage.ChatMessageBodyType contentType,
                                      Map<String, String> ext, List<String> targetAppUserId);
  • 构建文本消息体
/**
* 构建文本消息体
*
* @param sessionId  会话id,单聊为接收者用户Id,群聊为群id
* @param text 消息内容
* @param messageType 聊天类型:单聊、群聊; 如单聊{@link CLMessage.ChatMessageType#CHAT}
*/
CLIMSDK.getInstance().buildTextMessage(String sessionId, String text, CLMessage.ChatMessageType messageType);
  • 构建文件类消息体
/**
* 构建文件类消息体,包括图片、语音、视频、文件等需要上传文件的消息类型
* 构建时自动上传本地文件到服务端并回调文件下载地址
*
* 适用于文件存储在当前SDK服务器
*
* @param sessionId  会话id,单聊为接收者用户Id,群聊为群id
* @param fileLocalPath  待发送文件的本地绝对地址
* @param messageType  聊天类型:单聊、群聊; 如单聊{@link CLMessage.ChatMessageType#CHAT}
* @param fileType 文件类型:图片、语音、视频、文件、其他; 如语音{@link CLFileTypeEnum#VOICE}
* @param contentType 消息类型:语音、视频、图片、文件; 如语音{@link CLMessage.ChatMessageBodyType#VOICE}
* @param callback 消息体回调:调用消息对象{@link CLMessage#getContent()}方法可获取文件下载地址
*/
CLIMSDK.getInstance().buildFileMessageWithUploadNow(String sessionId, String fileLocalPath, CLMessage.ChatMessageType messageType, 
                                                    CLFileTypeEnum fileType, CLMessage.ChatMessageBodyType contentType, RequestCallback<CLMessage> callback);
  • 构建文件类消息体
/**
* 构建文件类消息体,包括图片、语音、视频、文件等需要上传文件的消息类型
*
* 适用于文件自存储,IM仅用于透传消息
*
* @param sessionId 会话id,单聊为接收者用户Id,群聊为群id
* @param fileUrl 文件下载地址
* @param messageType 聊天类型:单聊、群聊; 如单聊{@link CLMessage.ChatMessageType#CHAT}
* @param contentType 消息类型:语音、视频、图片、文件; 如语音{@link CLMessage.ChatMessageBodyType#VOICE}
* @param ext 消息扩展内容: 自定义消息扩展内容集合,如文件大小、文件扩展名、文件类型、语音时长等,以便接收后快速展示信息详情
*/
CLIMSDK.getInstance().buildFileMessageWithCustom(String sessionId, String fileUrl, CLMessage.ChatMessageType messageType,
                                                CLMessage.ChatMessageBodyType contentType, HashMap<String, String> ext);
  • 构建文件类消息体
/**
* 构建文件类消息体,包括图片、语音、视频、文件等需要上传文件的消息类型
*
* 适用于文件存储在当前SDK服务器,发送时自动上传文件,并通过调用{@link CLMessage#setContent(String)}方法更新文件下载地址
*
* @param sessionId  会话id,单聊为接收者用户Id,群聊为群id
* @param fileLocalPath  待发送文件的本地绝对地址
* @param messageType  聊天类型:单聊、群聊; 如单聊{@link CLMessage.ChatMessageType#CHAT}
* @param contentType 消息类型:语音、视频、图片、文件; 如语音{@link CLMessage.ChatMessageBodyType#VOICE}
*/
CLIMSDK.getInstance().buildFileMessageWithUploadWhenSending(String sessionId, String fileLocalPath, CLMessage.ChatMessageType messageType,
                                                           CLMessage.ChatMessageBodyType contentType);

2、发送消息

/**
* 发送消息
*/
CLIMSDK.getInstance().sendMessage(CLMessage chatMessage, RequestCallback<CLSendMessageResp> callback);

3、接收消息

/**
* 消息接收
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeReceiveMessage(RequestCallback<CLMessage> receiveMessageObserver, boolean register);

4、上报消息状态

/**
* 上报消息状态(已接收/已读报告)
*/
CLIMSDK.getInstance().reportMessageStatus(CLReportMessageStatusReq clReportMessageStatusReq, RequestCallback<CLReportMessageStatusResp> callback);

5、消息状态监听

/**
* 消息状态接收
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeReceiveMessageStatus(RequestCallback<CLMessage> receiveMessageStatusObserver, boolean register);

6、撤回消息

/**
* 消息撤回
*/
CLIMSDK.getInstance().recallMessage(CLMessage chatMessage, RequestCallback<CLReportMessageStatusResp> callback);

7、接收消息撤回监听

/**
* 接收消息撤回
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeReceiveMessageRecall(RequestCallback<CLMessage> receiveMessageRecallObserver, boolean register);

8、获取未读消息

/**
* 获取未读消息(应用端需要做消息去重)
* 应用启动时/离线重新登录后主动调用该接口,获取离线消息
* 若离线消息过多可能多次回调结果,根据unfinished字段判断
*
* @param callback: CLGetUnReadMessageResp -> unfinished 消息拉取未结束
*/
CLIMSDK.getInstance().getUnReadMessage(RequestCallback<CLGetUnReadMessageResp> callback);

9、获取历史消息

/**
* 获取历史消息
*
* @param clGetHistoryMessageReq: pageSize最大值可设为100
*/
CLIMSDK.getInstance().getHistoryMessage(CLGetHistoryMessageReq clGetHistoryMessageReq, RequestCallback<CLGetHistoryMessageResp> callback);

10、删除历史消息

/**
* 删除历史消息
*/
CLIMSDK.getInstance().deleteHistoryMessageReq(CLDelHistoryMessageReq clDelHistoryMessageReq, RequestCallback<CLDelHistoryMessageResp> callback);

三、好友模块

1、添加好友

/**
* 添加好友
*/
CLIMSDK.getInstance().addFriend(CLAddFriendReq clAddFriendReq, RequestCallback<CLAddFriendResp> callback);

2、设置新朋友添加请求通知监听

/**
* 设置新朋友添加请求通知监听
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeNewFriendReceive(RequestCallback<CLNewFriendRequestReceived> newFriendRequestObserver, boolean register);

3、同意/拒绝好友请求

/**
* 同意/拒绝好友请求
*/
CLIMSDK.getInstance().passAddFriend(CLPassAddFriendReq clPassAddFriendReq, RequestCallback<CLPassAddFriendResp> callback);

4、接收好友关系确认消息监听

/**
* 接收好友关系确认消息(对方同意/拒绝添加好友,对方删除好友关系)
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeReceiveFriendRequest(RequestCallback<CLFriendRelationMessage> receiveFriendRequestObserver, boolean register);

5、删除好友

/**
* 删除好友
*/
CLIMSDK.getInstance().deleteFriend(CLDeleteFriendReq clDeleteFriendReq, RequestCallback<CLDeleteFriendResp> callback);

6、查询好友列表

1、查询全部好友列表

/**
* 查询全部好友列表
*/
CLIMSDK.getInstance().queryAllFriendList(RequestCallback<CLQueryFriendListResp> callback);

2、分页查询好友列表

/**
* 分页查询好友列表
*
* @param clQueryFriendListReq pageSize:最大为100, page: 当前页
*/
CLIMSDK.getInstance().queryFriendList(CLQueryFriendListReq clQueryFriendListReq, RequestCallback<CLQueryFriendListResp> callback);

7、黑名单

1.获取黑名单列表

  • 获取全部黑名单好友列表
/**
* 获取全部黑名单好友列表
*/
CLIMSDK.getInstance().getAllBlockedFriendList(RequestCallback<CLBlockedFriendListResp> callback)
  • 分页获取黑名单好友列表
/**
* 分页获取黑名单好友列表
*
* @param clBlockedFriendListReq pageSize:最大为100, page: 当前页
*/
CLIMSDK.getInstance().getBlockedFriendList(CLBlockedFriendListReq clBlockedFriendListReq, RequestCallback<CLBlockedFriendListResp> callback);

2.拉入黑名单

/**
* 添加黑名单好友
*/
CLIMSDK.getInstance().addBlockedFriend(CLBlockedFriendReq clBlockedFriendReq, RequestCallback<CLBlockedFriendResp> callback);

3.移出黑名单

/**
* 移除黑名单好友
*/
CLIMSDK.getInstance().removeBlockedFriend(CLBlockedFriendReq clBlockedFriendReq, RequestCallback<CLBlockedFriendResp> callback);

8、设置好友聊天置顶

/**
* 置顶好友聊天
*/
CLIMSDK.getInstance().setFriendTop(CLSetFriendTopReq clSetFriendTopReq, RequestCallback<CLSetFriendTopResp> callback);

9、设置好友免打扰

/**
* 好友免打扰
*/
CLIMSDK.getInstance().setFriendDisturb(CLSetFriendDisturbReq clSetFriendDisturbReq, RequestCallback<CLSetFriendDisturbResp> callback);

10、设置好友备注

/**
* 修改好友备注
*/
CLIMSDK.getInstance().setFriendMarkName(CLSetFriendMarkReq clSetFriendMarkReq, RequestCallback<CLSetFriendMarkResp> callback);

11、音视频呼叫操作

1.取消呼叫

/**
* 取消语音呼叫
*/
CLIMSDK.getInstance().cancelAvCall(CLCancelAvCallReq clCancelAvCallReq, RequestCallback<CLCancelAvCallResp> callback);

2.拒绝呼叫请求

/**
* 拒绝呼叫请求
*/
CLIMSDK.getInstance().refuseAvCall(CLRefuseAvCallReq clRefuseAvCallReq, RequestCallback<CLRefuseAvCallResp> callback);

3.回复好友在线忙

/**
* 回复好友在线忙
*/
CLIMSDK.getInstance().busyAvCallReq(CLBusyAvCallReq clBusyAvCallReq, RequestCallback<CLBusyAvCallResp> callback);

4.设置音视频消息通知监听

/**
* 音视频消息通知监听
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeAvCallMessage(RequestCallback<CLAvCallMessage> avCallMessageObserver, boolean register);

四、群组模块

1、创建群组

/**
* 创建群组
*/
CLIMSDK.getInstance().createGroup(CLCreateGroupReq clCreateGroupReq, RequestCallback<CLCreateGroupResp> callback);

2、邀请好友进群

/**
* 邀请用户进群
*/
CLIMSDK.getInstance().groupInviteUser(CLGroupInviteUserReq clGroupInviteUserReq, RequestCallback<CLGroupInviteUserResp> callback);

3、设置新群邀请系统通知监听

/**
* 设置新群邀请系统通知监听
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeNewGroupInviteReceive(RequestCallback<CLNewGroupInviteReceived> newGroupInviteObserver, boolean register);

4、新群邀请回应

/**
* 用户添加群组回应(同意/拒绝进群)
*/
CLIMSDK.getInstance().groupInviteAckUser(CLGroupInviteUserAckReq clGroupInviteUserAckReq, RequestCallback<CLGroupInviteUserAckResp> callback);

5、修改被邀请人同意方式

/**
* 修改被邀请人同意方式
* @param clModifyGroupBeInviteModeReq : beInviteMode 被邀请人同意方式【0:不需要同意(默认),1:需要同意】
*/
CLIMSDK.getInstance().modifyGroupBeInviteModeReq(CLModifyGroupBeInviteModeReq clModifyGroupBeInviteModeReq, RequestCallback<CLModifyGroupBeInviteModeResp> callback);

6、修改群组成员拉人权限

/**
* 修改群组成员拉人权限
* @param clModifyGroupInviteModeReq : inviteMode 群组成员的拉人权限(0:所有人(默认),1:管理员)
*/
CLIMSDK.getInstance().modifyGroupInviteModeReq(CLModifyGroupInviteModeReq clModifyGroupInviteModeReq, RequestCallback<CLModifyGroupInviteModeResp> callback);

7、修改申请进群验证方式

/**
* 修改申请进群验证方式
* @param clModifyGroupJoinModeReq : joinMode 是否需要确认【0-不用验证(默认),1-需要验证,2-不允许任何人加入】
*/
CLIMSDK.getInstance().modifyGroupJoinModeReq(CLModifyGroupJoinModeReq clModifyGroupJoinModeReq, RequestCallback<CLModifyGroupJoinModeResp> callback);

8、用户添加群组回应

/**
* 用户添加群组回应(同意/拒绝)
*/
CLIMSDK.getInstance().groupInviteAckUser(CLGroupInviteUserAckReq clGroupInviteUserAckReq, RequestCallback<CLGroupInviteUserAckResp> callback);

9、退出群

/**
* 退出群组
*/
CLIMSDK.getInstance().quitGroup(CLQuitGroupReq clQuitGroupReq, RequestCallback<CLQuitGroupResp> callback);

10、修改群名称

/**
* 修改群组名称
*/
CLIMSDK.getInstance().modifyGroupName(CLModifyGroupInfoReq clModifyGroupInfoReq, RequestCallback<CLModifyGroupNameResp> callback);

11、修改群介绍

/**
* 修改群组介绍
*/
CLIMSDK.getInstance().modifyGroupIntro(CLModifyGroupInfoReq clModifyGroupInfoReq, RequestCallback<CLModifyGroupIntroResp> callback);

12、修改群通知

/**
* 修改群组公告
*/
CLIMSDK.getInstance().modifyGroupNotice(CLModifyGroupInfoReq clModifyGroupInfoReq, RequestCallback<CLModifyGroupNoticeResp> callback);

13、查询群成员列表

  • 获取全部群组用户列表
/**
* 获取全部群组用户列表
*/
CLIMSDK.getInstance().queryGroupAllUser(String groupId, RequestCallback<CLQueryGroupUserResp> callback);
  • 分页查询群组用户列表
/**
* 分页查询群组用户列表
*
* @param clQueryGroupUserReq: role默认为群主,可查询所有用户, pageSize最大条数为100
*/
CLIMSDK.getInstance().queryGroupUser(CLQueryGroupUserReq clQueryGroupUserReq, RequestCallback<CLQueryGroupUserResp> callback);

14、查询加入的群列表

  • 分页查询拥有群组列表
/**
* 查询拥有群组列表
*
* @param clQueryGroupListReq: pageSize最大条数为100
*/
CLIMSDK.getInstance().queryGroupList(CLQueryGroupListReq clQueryGroupListReq, RequestCallback<CLQueryGroupListResp> callback);
  • 获取拥有的全部群列表
/**
* 获取拥有的全部群列表
*/
CLIMSDK.getInstance().getAllGroupList(RequestCallback<CLQueryGroupListResp> callback);

15、获取群文件列表

/**
* 获取群组文件列表
*/
CLIMSDK.getInstance().findGroupFileList(CLFindGroupFileListReq clFindGroupFileListReq, RequestCallback<CLFindGroupFileListResp> callback);

16、添加群文件

/**
* 添加群组文件
*/
CLIMSDK.getInstance().addGroupFile(CLAddGroupFileReq clAddGroupFileReq, RequestCallback<CLAddGroupFileResp> callback);

17、删除群文件

/**
* 删除群组文件
*/
CLIMSDK.getInstance().deleteGroupFile(CLDeleteGroupFileReq clDeleteGroupFileReq, RequestCallback<CLDeleteGroupFileResp> callback);

18、解散群组

/**
* 解散群
*/
CLIMSDK.getInstance().disbandGroup(CLDisbandGroupReq clDisbandGroupReq, RequestCallback<CLDisbandGroupResp> callback);

19、查询群信息

/**
* 查询群信息详情
*/
CLIMSDK.getInstance().queryGroupInfo(CLQueryGroupInfoReq clQueryGroupInfoReq, RequestCallback<CLQueryGroupInfoResp> callback);

20、设置群聊免打扰

/**
* 设置群信息免打扰状态
*/
CLIMSDK.getInstance().setGroupDisturbStatus(CLSetGroupDisturbReq clSetGroupDisturbReq, RequestCallback<CLSetGroupDisturbResp> callback);

21、申请加入群聊

/**
* 申请加入群聊
* @param clGroupApplyToJoinReq : isScan -> 是否为扫码入群申请 默认为true
*/
CLIMSDK.getInstance().applyToJoinGroupReq(CLGroupApplyToJoinReq clGroupApplyToJoinReq, RequestCallback<CLGroupApplyToJoinResp> callback);

22、设置申请入群通知监听

/**
* 设置申请入群通知监听
* @param register true为注册,false为注销
*/
CLIMSDK.getInstance().observeGroupApplyJoinObserver(RequestCallback<CLGroupApplyToJoinReceived> newGroupApplyJoinObserver, boolean register);

23、群主同意/拒绝入群

/**
* 群主同意/拒绝入群
*/
CLIMSDK.getInstance().groupOwnerApproveJoinReq(CLGroupOwnerApproveJoinReq clGroupOwnerApproveJoinReq, RequestCallback<CLGroupOwnerApproveJoinResp> callback);

24、移除群成员

/**
* 移除群成员
*/
CLIMSDK.getInstance().removeGroupUser(CLRemoveGroupUserReq clRemoveGroupUserReq, RequestCallback<CLRemoveGroupUserResp> callback);

25、设置群成员角色

/**
* 改变群主/设置管理员
*/
CLIMSDK.getInstance().setGroupUserRole(CLSetGroupUserRoleReq clSetGroupUserRoleReq, RequestCallback<CLSetGroupUserRoleResp> callback);

26、群禁言

/**
* 群禁言
*/
CLIMSDK.getInstance().muteGroup(CLMuteGroupReq clMuteGroupReq, RequestCallback<CLMuteGroupResp> callback);

27、设置群聊置顶

/**
* 设置置顶群聊
*/
CLIMSDK.getInstance().modifyGroupTop(CLModifyGroupTopReq clModifyGroupTopReq, RequestCallback<CLModifyGroupTopResp> callback);

28、查找群用户信息

/**
* 查找群用户信息
*/
CLIMSDK.getInstance().findGroupUser(CLFindGroupUserReq clFindGroupUserReq, RequestCallback<CLFindGroupUserResp> callback);

29、修改群昵称

/**
* 设置群昵称
*/
CLIMSDK.getInstance().modifyGroupNickName(CLGroupUserNickNameReq clGroupUserNickNameReq, RequestCallback<CLGroupUserNickNameResp> callback);

30、群成员禁言/解禁

/**
* 设置群成员禁言/解禁
*/
CLIMSDK.getInstance().modifyGroupUserMute(CLModifyGroupUserMuteReq clModifyGroupUserMuteReq, RequestCallback<CLModifyGroupUserMuteResp> callback);

31、获取群消息已读成员列表

/**
* 获取群组内消息已读未读的详细用户列表
*/
CLIMSDK.getInstance().acquireGroupReadStatus(CLAcquireGroupReadMessageInfoReq clAcquireGroupReadMessageInfoReq, RequestCallback<CLAcquireGroupReadMessageInfoResp> callback);

32、音视频呼叫操作

1.拒接群呼叫

/**
* 拒绝群呼叫
*/
CLIMSDK.getInstance().groupRefuseAvCall(CLGroupRefuseAvCallReq clGroupRefuseAvCallReq, RequestCallback<CLGroupRefuseAvCallResp> callback);

2.设置音视频消息通知监听(见好友模块)

五、系统

1、获取系统未读消息(新好友请求、新群聊邀请、新入群申请)

使用场景:离线再登录请求系统未读消息,用于获取新好友请求、新群聊邀请消息

/**
* 分页获取系统未读消息(和在线通知消息重复,应用端需要本地去重)
* 掉线后重新登录主动获取未读消息
*
* @param clGetUnReadSystemMessageReq : pageSize最大为100,fromMsgId第一页传"",下一页传上一页获取到的最后一个消息Id
*/
CLIMSDK.getInstance().getUnReadSystemMessage(CLGetUnReadSystemMessageReq clGetUnReadSystemMessageReq);

2、设置请求返回超时时间

/**
* 设置请求超时时间
* @param tcpTimeout 默认 10秒
*/
CLIMSDK.getInstance().setTcpTimeout(long tcpTimeout);

3、初始化推送服务

/**
* 初始化推送服务
*
* @param pushType 小米:MI、华为:HW、魅族:MZ、OPPO:OPPO、VIVO:VIVO
* @param deviceToken 厂商推送token
*/
CLIMSDK.getInstance().initPush(String pushType, String deviceToken, IPushRegisterListener listener);