圈组服务器成员管理
更新时间: 2023/01/30 18:58:36
创建Server后,可以选择邀请他人成为Server的成员或者申请成为某个Server的成员,也可以通过邀请码的形式加入某个 Server。
SDK 中用于表示Server成员的结构为 QChatServerMember
,参数说明如下:
返回值 | 参数 | 说明 |
---|---|---|
long | getServerId() | 获取服务器id |
String | getAccid() | 获取用户Id |
String | getNick() | 获取昵称 |
String | getAvatar() | 获取头像 |
String | getCustom() | 获取自定义扩展 |
QChatMemberType | getType() | 获取成员类型: |
QChatMemberType.Normal:普通成员 | ||
QChatMemberType.Owner:所有者 | ||
long | getJoinTime() | 获取加入时间 |
String | getInviter() | 获取邀请人 |
boolean | isValid() | 是否有效标志:false-无效,true-有效 |
long | getCreateTime() | 获取创建时间 |
long | getUpdateTime() | 获取更新时间 |
void | setNick(String nick) | 设置昵称 |
void | setAvatar(String avatar) | 设置头像 |
void | setCustom(String custom) | 设置自定义扩展 |
void | setType(QChatMemberType type) | 设置成员类型 |
void | setValid(boolean validFlag) | 设置有效标志:false-无效,true-有效 |
成员邀请
- 拥有邀请他人加入服务器的权限(
INVITE_SERVER
,具体权限类型请参见QChatRoleResource
)的人可以向他人发起邀请,邀请别人加入圈组服务器。收到邀请通知的人可以接受或者拒绝邀请。 - 拥有申请邀请管理权限的人也可以提前生成邀请码,其他用户可以直接使用邀请码加入圈组服务器。
邀请加入圈组服务器
接口
可以一个accid列表向多人发起加入某个圈组服务器的邀请。
/**
* 邀请服务器成员
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<QChatInviteServerMembersResult> inviteServerMembers(QChatInviteServerMembersParam param);
其中QChatInviteServerMembersParam中传入需要邀请的accid列表以及指定的ServerId,还可以设置有效时长和邀请附言(最多5000个字符)。
示例代码
List<String> accids = new ArrayList<>();
accids.add("test");
QChatInviteServerMembersParam param = new QChatInviteServerMembersParam(943445L,accids);
param.setPostscript("邀请你加入测试服务器");
NIMClient.getService(QChatServerService.class).inviteServerMembers(param).setCallback(
new RequestCallback<QChatInviteServerMembersResult>() {
@Override
public void onSuccess(QChatInviteServerMembersResult result) {
//邀请成功,会返回因为用户服务器数量超限导致失败的accid列表
List<String> failedAccids = result.getFailedAccids();
}
@Override
public void onFailed(int code) {
//邀请失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//邀请异常
}
});
接受加入圈组服务器
邀请方发送邀请请求成功后,被邀请方会收到SERVER_MEMBER_INVITE(邀请服务器成员)系统通知,收到该系统通知后,被邀请方可以调用以下接口接受加入Server邀请:
接口
/**
* 接受邀请
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> acceptServerInvite(QChatAcceptServerInviteParam param);
其中QChatAcceptServerInviteParam中需要传入接受加入的ServerId、发起邀请的accid以及邀请唯一标识requestId。
邀请唯一标识requestId可以从邀请服务器成员(SERVER_MEMBER_INVITE)系统通知附件 或者 查询服务器下的申请邀请记录接口返回结果中获取。
示例代码
long requestId = getRequestId();
NIMClient.getService(QChatServerService.class).acceptServerInvite(new QChatAcceptServerInviteParam(943445L,"test",requestId)).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//接受邀请成功
}
@Override
public void onFailed(int code) {
//接受邀请失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//接受邀请异常
}
});
拒绝加入圈组服务器
接口
邀请方发送邀请请求成功后,被邀请方会收到SERVER_MEMBER_INVITE(邀请服务器成员)系统通知。收到该系统通知后,被邀请方可以调用以下接口拒绝加入Server邀请:
/**
* 拒绝邀请
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> rejectServerInvite(QChatRejectServerInviteParam param);
其中QChatRejectServerInviteParam中传入需要拒绝加入的ServerId、发起邀请的accid以及邀请唯一标识requestId。
邀请唯一标识requestId可以从邀请服务器成员(SERVER_MEMBER_INVITE)系统通知附件 或者 查询服务器下的申请邀请记录接口返回结果中获取。
示例代码
long requestId = getRequestId();
QChatRejectServerInviteParam param = new QChatRejectServerInviteParam(943445L,"test",requestId);
param.setPostscript("拒绝邀请");
NIMClient.getService(QChatServerService.class).rejectServerInvite(param).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//拒绝邀请成功
}
@Override
public void onFailed(int code) {
//拒绝邀请失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//拒绝邀请异常
}
});
生成邀请码
拥有申请邀请管理权限(SERVER_APPLY_HANDLE
,具体权限类型请参见QChatRoleResource
)的人可以提前生成邀请码,其他用户可以直接使用提供的邀请码加入圈组服务器。
接口
您可通过以下接口生成邀请码:
/**
* 生成邀请码
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果
*/
InvocationFuture<QChatGenerateInviteCodeResult> generateInviteCode(@NonNull QChatGenerateInviteCodeParam param);
其中 QChatGenerateInviteCodeParam
需要必须传入服务器ID,有效期可不传。
示例代码
QChatGenerateInviteCodeParam param = new QChatGenerateInviteCodeParam(311254);
//设置过期时间为1天
param.setTtl(24 * 60 * 60 * 1000L);
NIMClient.getService(QChatServerService.class).generateInviteCode(param).setCallback(
new RequestCallback<QChatGenerateInviteCodeResult>() {
@Override
public void onSuccess(QChatGenerateInviteCodeResult result) {
//生成邀请码成功
}
@Override
public void onFailed(int code) {
//生成邀请码失败
}
@Override
public void onException(Throwable exception) {
//生成邀请码异常
}
});
人员申请加入
主动申请加入
接口
您可通过以下接口申请加入指定的Server:
/**
* 申请加入服务器
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<QChatApplyServerJoinResult> applyServerJoin(QChatApplyServerJoinParam param);
其中QChatApplyServerJoinParam需要传入申请加入的ServerId,还可以设置有效时长和申请附言(最多5000个字符)。
示例代码
QChatApplyServerJoinParam param = new QChatApplyServerJoinParam(943445L);
param.setPostscript("申请加入服务器");
NIMClient.getService(QChatServerService.class).applyServerJoin(param).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//申请加入服务器成功
}
@Override
public void onFailed(int code) {
//申请加入服务器失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//申请加入服务器异常
}
});
接受申请
接口
有人申请加入某圈组服务器后,具有该圈组服务器管理权限的人会收到SERVER_MEMBER_APPLY(申请加入服务器)的通知。收到该系统通知后,管理者可以调用以下接口接受该申请:
/**
* 接受申请
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> acceptServerApply(QChatAcceptServerApplyParam param);
其中QChatAcceptServerApplyParam需要传入接受加入的ServerId、发起申请的accid以及申请唯一标识requestId。
申请唯一标识requestId可以从申请加入服务器(SERVER_MEMBER_APPLY)系统通知附件 或者 查询服务器下的申请邀请记录接口返回结果中获取。
示例代码
long requestId = getRequestId();
NIMClient.getService(QChatServerService.class).acceptServerApply(new QChatAcceptServerApplyParam(943445L,"test",requestId)).setCallback(
new RequestCallback<Void>() {
public void onSuccess(Void param) {
//接受申请成功
}
@Override
public void onFailed(int code) {
//接受申请失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//接受申请异常
}
});
拒绝申请
接口
有人申请加入某圈组服务器后,具有该服务器管理权限的人会收到SERVER_MEMBER_APPLY(申请加入服务器)的通知。收到该系统通知后,管理者可以调用以下接口拒绝申请:
/**
* 拒绝申请
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> rejectServerApply(QChatRejectServerApplyParam param);
其中QChatRejectServerApplyParam需要传入拒绝加入的ServerId、发起申请的accid以及申请唯一标识requestId。
申请唯一标识requestId可以从申请加入服务器(SERVER_MEMBER_APPLY)系统通知附件 或者 查询服务器下的申请邀请记录接口返回结果中获取。
示例代码
long requestId = getRequestId();
QChatRejectServerApplyParam param = new QChatRejectServerApplyParam(943445L,"test",requestId);
param.setPostscript("拒绝申请");
NIMClient.getService(QChatServerService.class).rejectServerApply(param).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//拒绝邀请成功
}
@Override
public void onFailed(int code) {
//拒绝邀请失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//拒绝邀请异常
}
});
根据邀请码加入服务器
接口
用户可以通过收到的邀请码加入圈组服务器。
/**
* 通过邀请码加入服务器
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果
*/
InvocationFuture<Void> joinByInviteCode(@NonNull QChatJoinByInviteCodeParam param);
其中QChatJoinByInviteCodeParam中必须传入服务器ID和邀请码。
示例代码
String inviteCode = getInviteCode();
QChatJoinByInviteCodeParam param = new QChatJoinByInviteCodeParam(311254,inviteCode);
NIMClient.getService(QChatServerService.class).joinByInviteCode(param).setCallback(new RequestCallback<Void>() {
@Override
public void onSuccess(Void result) {
//通过邀请码加入服务器成功
}
@Override
public void onFailed(int code) {
//通过邀请码加入服务器失败
}
@Override
public void onException(Throwable exception) {
//通过邀请码加入服务器异常
}
});
踢出圈组服务器成员
接口
具有踢出他人的权限的成员可以将其他成员踢出圈组服务器:
/**
* 踢除服务器成员
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> kickServerMembers(QChatKickServerMembersParam param);
其中QChatKickServerMembersParam需要传入当前操作的ServerId和需要被踢出用户的accid列表。
示例代码
List<String> accids = new ArrayList<>();
accids.add("test");
NIMClient.getService(QChatServerService.class).kickServerMembers(new QChatKickServerMembersParam(943445L,accids)).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//踢除成员成功
}
@Override
public void onFailed(int code) {
//踢除成员失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//踢除成员异常
}
});
主动离开圈组服务器
接口
加入圈组服务器后如不想继续待在此服务器中,可以选择主动离开。离开后将不再接收该服务器下的消息和通知。
/**
* 主动离开服务器
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> leaveServer(QChatLeaveServerParam param);
其中QChatLeaveServerParam需要传入离开的ServerId。
示例代码
NIMClient.getService(QChatServerService.class).leaveServer(new QChatLeaveServerParam(943445L)).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//离开Server成功
}
@Override
public void onFailed(int code) {
//离开Serve失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//离开Serve异常
}
});
修改成员信息
可修改自己或者他人的圈组服务器成员信息。前提是您需要拥有相应的权限,权限相关详情请参见身份组系统。
修改本人成员信息
接口
如果您有权限修改自己在当前圈组服务器的成员信息,可通过如下接口进行修改:
/**
* 修改服务器成员信息
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<QChatUpdateMyMemberInfoResult> updateMyMemberInfo(QChatUpdateMyMemberInfoParam param);
其中QChatUpdateMyMemberInfoParam需要传入对应的ServerId以及相应的修改项。支持对成员昵称、头像和自定义扩展的修改,9.1.0版本后可设置反垃圾配置QChatAntiSpamConfig。
示例代码
QChatUpdateMyMemberInfoParam param = new QChatUpdateMyMemberInfoParam(943445L);
param.setNick("昵称2");
param.setCustom("xxxxx");
QChatAntiSpamConfig antiSpamConfig = new QChatAntiSpamConfig("用户配置的对某些资料内容另外的反垃圾的业务ID");
param.setAntiSpamBusinessId(antiSpamConfig);
NIMClient.getService(QChatServerService.class).updateMyMemberInfo(param).setCallback(new RequestCallback<QChatUpdateMyMemberInfoResult>() {
@Override
public void onSuccess(QChatUpdateMyMemberInfoResult result) {
//修改成员信息成功,返回最新的成员信息
QChatServerMember member = result.getMember();
}
@Override
public void onFailed(int code) {
//修改成员信息失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//修改成员信息异常
}
});
修改他人成员信息
接口
如果您有权限修改他人在当前圈组服务器的成员信息,可通过以下接口进行修改:
/**
* 修改其他人的服务器成员信息
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<QChatUpdateServerMemberInfoResult> updateServerMemberInfo(QChatUpdateServerMemberInfoParam param);
其中 QChatUpdateServerMemberInfoParam 需要传入对应的 ServerId、待修改成员的accid以及相应的修改项。支持修改其他成员的昵称和头像,9.1.0版本后可设置反垃圾配置 QChatAntiSpamConfig。
示例代码
QChatUpdateServerMemberInfoParam param = new QChatUpdateServerMemberInfoParam(943445L,"test");
param.setNick("昵称3");
QChatAntiSpamConfig antiSpamConfig = new QChatAntiSpamConfig("用户配置的对某些资料内容另外的反垃圾的业务ID");
param.setAntiSpamBusinessId(antiSpamConfig);
NIMClient.getService(QChatServerService.class).updateServerMemberInfo(param).setCallback(new RequestCallback<QChatUpdateServerMemberInfoResult>() {
@Override
public void onSuccess(QChatUpdateServerMemberInfoResult result) {
//修改成员信息成功,返回最新的成员信息
QChatServerMember member = result.getMember();
}
@Override
public void onFailed(int code) {
//修改成员信息失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//修改成员信息异常
}
});
查询成员信息
SDK提供两种方式查询圈组服务器成员信息,分别是按ServerId+Accid查询和按时间分页查询成员信息。
按ServerId+Accid查询Server成员信息
接口
可通过 ServerId+Accid 键值对列表(List<Pair<Long, String>>)的方式查询多个成员信息:
/**
* 通过accid查询服务器成员
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。回调返回查询到的服务器成员
*/
InvocationFuture<QChatGetServerMembersResult> getServerMembers(QChatGetServerMembersParam param);
其中QChatGetServerMembersParam中传入需要查询的ServerId+Accid键值对列表(List<Pair<Long, String>>)。Pair.first 填 serverId,Pair.second 填 accid。
示例代码
List<Pair<Long,String>> serverIdAccidPairList = new ArrayList<>();
serverIdAccidPairList.add(new Pair<>(943445L,"test"));
QChatGetServerMembersParam param = new QChatGetServerMembersParam(serverIdAccidPairList);
NIMClient.getService(QChatServerService.class).getServerMembers(param).setCallback(new RequestCallback<QChatGetServerMembersResult>() {
@Override
public void onSuccess(QChatGetServerMembersResult result) {
//查询Server成员信息成功,返回查询到的Server成员信息
List<QChatServerMember> serverMembers = result.getServerMembers();
}
@Override
public void onFailed(int code) {
//查询Server成员信息失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//查询Server成员信息异常
}
});
按时间分页查询成员信息
接口
可以通过时间戳和查询数量分页查询指定圈组服务器的成员信息:
/**
* 通过分页信息查询服务器成员
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。回调返回查询到的服务器成员
*/
InvocationFuture<QChatGetServerMembersByPageResult> getServerMembersByPage(QChatGetServerMembersByPageParam param);
其中 QChatGetServerMembersByPageParam 的入参内容包括 ServerId、查询锚点时间戳 timeTag 和查询数量限制 limit。
示例代码
//当前时间往前查最多100条Server成员信息
NIMClient.getService(QChatServerService.class).getServerMembersByPage(new QChatGetServerMembersByPageParam(943445L,System.currentTimeMillis(),100)).setCallback(
new RequestCallback<QChatGetServerMembersByPageResult>() {
@Override
public void onSuccess(QChatGetServerMembersByPageResult result) {
//查询Server成员信息成功,返回查询到的Server成员信息
List<QChatServerMember> serverMembers = result.getServerMembers();
}
@Override
public void onFailed(int code) {
//查询Server成员信息失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//查询Server成员信息异常
}
});
查询申请/邀请的历史记录
查询服务器下的申请/邀请记录
查询服务器下的申请/邀请记录,需要拥有申请邀请历史查看权限(INVITE_APPLY_HISTORY_QUERY
,具体权限类型请参见QChatRoleResource
)。
接口
/**
* 查询服务器下的申请邀请记录
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果
*/
InvocationFuture<QChatGetInviteApplyRecordOfServerResult> getInviteApplyRecordOfServer(@NonNull QChatGetInviteApplyRecordOfServerParam param);
其中QChatGetInviteApplyRecordOfServerParam必须传入服务器ID,其他值可为空。
示例代码
QChatGetInviteApplyRecordOfServerParam param = new QChatGetInviteApplyRecordOfServerParam(311254);
//设置查询开始时间,首次查询可不传
param.setFromTime(getFromTime());
//搜索查询结束时间,,首次查询可不传
param.setToTime(getToTime());
param.setLimit(100);
param.setReverse(false);
param.setExcludeRecordId(null);
NIMClient.getService(QChatServerService.class).getInviteApplyRecordOfServer(param).setCallback(
new RequestCallback<QChatGetInviteApplyRecordOfServerResult>() {
@Override
public void onSuccess(QChatGetInviteApplyRecordOfServerResult result) {
//
}
@Override
public void onFailed(int code) {
}
@Override
public void onException(Throwable exception) {
}
});
查询本人的申请/邀请记录
查询本人的申请/邀请记录,需要拥有申请邀请历史查看权限(INVITE_APPLY_HISTORY_QUERY
,具体权限类型请参见QChatRoleResource
)。
接口
/**
* 查询我的申请邀请记录
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果
*/
InvocationFuture<QChatGetInviteApplyRecordOfSelfResult> getInviteApplyRecordOfSelf(@NonNull QChatGetInviteApplyRecordOfSelfParam param);
示例代码
QChatGetInviteApplyRecordOfSelfParam param = new QChatGetInviteApplyRecordOfSelfParam();
//设置查询开始时间,首次查询可不传
param.setFromTime(getFromTime());
//搜索查询结束时间,,首次查询可不传
param.setToTime(getToTime());
param.setLimit(100);
param.setReverse(false);
param.setExcludeRecordId(null);
NIMClient.getService(QChatServerService.class).getInviteApplyRecordOfSelf(param).setCallback(
new RequestCallback<QChatGetInviteApplyRecordOfSelfResult>() {
@Override
public void onSuccess(QChatGetInviteApplyRecordOfSelfResult result) {
//
}
@Override
public void onFailed(int code) {
}
@Override
public void onException(Throwable exception) {
}
});
封禁相关
封禁服务器成员
接口
可以通过以下接口对服务器成员进行封禁,封禁后成员直接被踢出服务器(需要有对应服务器封禁权限的人才能封禁服务器成员),某成员被封禁后,所有该服务器成员都会收到该封禁成员被踢的系统通知QChatSystemNotificationType.SERVER_MEMBER_KICK,且不能再申请加入服务器或被邀请加入服务器。
/**
* 封禁服务器成员
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> banServerMember(QChatBanServerMemberParam param);
其中 QChatBanServerMemberParam 的入参内容包括 ServerId和需要封禁的成员accid。
示例代码
NIMClient.getService(QChatServerService.class).banServerMember(new QChatBanServerMemberParam(1607312,"test")).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//操作成功
}
@Override
public void onFailed(int code) {
//操作失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//操作异常
}
});
解封服务器成员
接口
可以通过以下接口对已封禁的服务器成员进行解封,解封后,该成员可正常申请加入服务器或被邀请加入服务器。
/**
* 解封服务器成员
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<Void> unbanServerMember(QChatUnbanServerMemberParam param);
其中 QChatUnbanServerMemberParam 的入参内容包括 ServerId和需要解封的成员accid。
示例代码
NIMClient.getService(QChatServerService.class).unbanServerMember(new QChatUnbanServerMemberParam(1607312,"test")).setCallback(
new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
//操作成功
}
@Override
public void onFailed(int code) {
//操作失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//操作异常
}
});
分页查询服务器封禁成员列表
接口
可以通过以下接口分页查询某服务器下被封禁的成员列表。
/**
* 查询服务器封禁成员列表(分页)
* @param param
* @return InvocationFuture 可设置回调函数,监听操作结果。
*/
InvocationFuture<QChatGetBannedServerMembersByPageResult> getBannedServerMembersByPage(QChatGetBannedServerMembersByPageParam param);
其中 QChatGetBannedServerMembersByPageParam 的入参内容包括 ServerId、查询时间戳timeTag和查询数量限制limit,timeTag传0表示当前时间,limit默认100. QChatGetBannedServerMembersByPageResult返回被封禁成员QChatBannedServerMember列表。
QChatBannedServerMember参数说明如下:
返回值 | 参数 | 说明 |
---|---|---|
long | getServerId() | 获取服务器id |
String | getAccid() | 获取用户accid |
String | getCustom() | 获取自定义扩展 |
long | getBanTime() | 获取封禁时间 |
boolean | isValid() | 获取有效标志:false-无效,true-有效 |
long | getCreateTime() | 获取创建时间 |
long | getUpdateTime() | 获取更新时间 |
示例代码
NIMClient.getService(QChatServerService.class).getBannedServerMembersByPage(new QChatGetBannedServerMembersByPageParam(1607312L,0L))
.setCallback(new RequestCallback<QChatGetBannedServerMembersByPageResult>() {
@Override
public void onSuccess(QChatGetBannedServerMembersByPageResult result) {
//操作成功
List<QChatBannedServerMember> serverMemberBanInfoList = result.getServerMemberBanInfoList();
}
@Override
public void onFailed(int code) {
//操作失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//操作异常
}
});