本文介绍 Hummer ChatRoom SDK 的聊天室管理功能。
为了方便用户管理聊天室,SDK提供了相应的聊天室管理方法来满足用户不同的应用场景。
由于一些场景下,一个聊天室的内的成员可能有十几万,故聊天室 SDK 提供了对应的按需分页获取成员的结果。同时也会按照一定的默认规则来进行排序对应的成员列表。获取成员列表的接口,可以在不进入聊天室时也可以获取。使用 fetchMembers
方法可以查询聊天室内的成员.
// chatRoom 需要获取成员的聊天室标识
// num 需要获取成员的数目
// offset 需要拉取的位置,第一页从0开始
// completion 获取完成后的回调,业务可以根据对应的获取的结果来做不同的业务处理,在获取成功的后可以通过成功后的成员列表来进行业务处理
HMR.getService(class).fetchMembers(ChatRoom chatRoom, int num, int offset, new HMR.CompletionArg<List<User>>() {
@Override
public void onSuccess(List<User> arg) {
}
@Override
public void onFailed(Error err) {
}
});
踢出成员需要对应的角色(Admin 和 Owner) 才可以踢出对应的成员,并且 Admin 不可以踢出 Admin 和 Owner, 而 Owner 可以踢出频道内所有成员。并且踢出成员需要进入频道后以及被踢出的成员也需要进入频道才可以踢出。使用 kick
方法可以踢出聊天室内成员。
// chatRoom 需要踢出成员所在的聊天室标识
// member 需要踢出的成员标识
// extraIno 踢出成员所携带的扩展信息,其中可以填写踢出的限制时间和原因,后台会将该信息透传给业务服务器
// completion 踢出完成的回调,业务可以根据对应的踢出结果做不同的业务处理,踢出失败后也会携带对应的错误原因
HMR.getService(class).kick(ChatRoom chatRoom, User member, null, new HMR.Completion() {
@Override
public void onSuccess() {
}
@Override
public void onFailed(Error err) {
}
});
业务可以根据对应的需要禁言某个成员,目前后台默认的禁言时间为三天,但是在超过三天后,没有对应的解禁通知。禁言需要 Admin 或者 Owner 的角色, Owner 可以禁言频道内的所有人包括 Admin, 而 Admin 则只可以禁言普通成员。可以使用 muteMember
方法禁言聊天室内的某个成员。
// chatRoom 需要禁言成员所在的聊天室标识
// member 需要禁言的成员标识
// reason 禁言的原因,该字段会通过后台透传到业务服务器
// completion 禁言完成后的回调,业务可以根据对应禁言结果做不同的业务处理
HMR.getService(class).muteMember(ChatRoom chatRoom, User member, null, new HMR.Completion() {
@Override
public void onSuccess() {
}
@Override
public void onFailed(Error err) {
}
});
用户可以使用 fetchMutedUsers
方法获取聊天室内禁言的成员列表
// chatRoom 需要获取列表所属的聊天室标识
// completion 获取完成后的回调,业务可以根据对应的获取结果做不同的业务处理,在获取成功时,会同时返回对应的禁言成员的数组
HMR.getService(class).fetchMutedUsers(mChatRoom, new HMR.CompletionArg<Set<User>>() {
@Override
public void onSuccess(Set<User> members) {
}
@Override
public void onFailed(Error error) {
}
});
用户可以使用 isMuted
方法判断聊天室内的某一个用户是否被禁言
// chatRoom 需要获取列表所属的聊天室标识
// member 需要判断的成员标识
// completion 判断完成后的回调,业务可以根据对应判断结果来做不同的业务处理,当结果为true时则表示该用户被禁言了,false则表示该用户未被禁言
HMR.getService(class).isMuted(ChatRoom chatRoom, HMR.getMe(),new HMR.CompletionArg<Boolean>() {
@Override
public void onSuccess(Boolean isMuted) {
}
@Override
public void onFailed(Error error) {
}
});
业务可以根据对应的需要解除对某个聊天室成员的禁言,使用 unmuteMember
方法可以解除聊天室内某个成员的禁言。
// chatRoom 需要解除禁言成员所在的聊天室标识
// member 需要解除禁言的成员标识
// reason 解除禁言的原因,该字段会通过后台透传到业务服务器
// completion 解除禁言完成后的回调,业务可以根据对应解除禁言结果做不同的业务处理
HMR.getService(class).unmuteMember(ChatRoom chatRoom, User member, null,new HMR.Completion() {
@Override
public void onSuccess() {
}
@Override
public void onFailed(Error err) {
}
});