禁言用户
本文介绍如何禁言指定用户或禁言全体用户。
说明
注意,只有当前房间的创建者或者管理员,才能禁言用户;房间内其他人禁言无效。
当前房间的创建者或者管理员不会被其他管理员禁言。
API使用示例
禁言指定用户
iOS:
//比如禁言某用户50秒
id<AIRBRoomChannelProtocol> room = [[AIRBRoomEngine sharedInstance] getRoomChannelWithRoomID:@"xxx"];
[room.chat banCommentWithUserID:@"填入要被禁言的userID" banTimeInSeconds:50 onSuccess:^{
//禁言成功
} onFailure:^(NSString * _Nonnull errorMessage) {
//禁言失败
}];
Android:
// 要禁言的用户ID
String userId = "111";
// 禁言时长(单位: 秒)
int muteSeconds = 300;
chatService.banComment(userId, muteSeconds, new Callback<Void>() {
@Override
public void onSuccess(Void data) {
// 禁言成功
}
@Override
public void onError(String errorMsg) {
// 禁言失败
}
});
Web:
// muteSecond为禁言时长,单位为秒,填0为永久禁言,不填默认禁言30秒,最大时长限制为24小时
chatService.banComment(userId, muteSeconds).then(() => { console.log('禁言成功') })
Windows:
auto room_ptr = alibaba::meta_space::MetaSpace::GetInstance()->GetRoomInstance(room_id);
std::shared_ptr<IChat> chat_plugin = std::dynamic_pointer_cast<IChat>(room_ptr->GetPlugin(PluginChat));
chat_plugin->MuteUser("xxx");
全员禁言
iOS:
id<AIRBRoomChannelProtocol> room = [[AIRBRoomEngine sharedInstance] getRoomChannelWithRoomID:@"xxx"];
[self.room.chat banAllComment:YES onSuccess:^{
NSLog("banAllComments success.");
} onFailure:^(NSString * _Nonnull errorMessage) {
NSLog("banAllComments failed(%@).", errorMessage);
}];
Android:
chatService.banAllComment(new Callback<Void>() {
@Override
public void onSuccess(Void data) {
// 全员禁言成功
}
@Override
public void onError(String errorMsg) {
// 全员禁言失败
}
});
Web:
chatService.banAllComment().then(() => { console.log('全员禁言成功') })
Windows:
auto room_ptr = alibaba::meta_space::MetaSpace::GetInstance()->GetRoomInstance(room_id);
std::shared_ptr<IChat> chat_plugin = std::dynamic_pointer_cast<IChat>(room_ptr->GetPlugin(PluginChat));
chat_plugin->MuteAll();
接收禁言消息通知的API使用示例
接收禁言指定用户的消息
iOS:
// 需要设置AIRBRoomChannelProtocol的delegate并实现以下方法,监听如下事件,解析JSON内容
- (void) onAIRBRoomChannelEvent:(AIRBRoomChannelEvent) event info:(NSDictionary*)info
{
case AIRBRoomChannelEventMessageReceived: {
AIRBRoomChannelMessageType type = [[info valueForKey:@"type"] intValue];
switch (type)
{
case AIRBRoomChannelMessageTypeChatOneUserCommentBannedOrNot:
{
NSData *turnData = [[info valueForKey:@"data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:turnData options:NSJSONReadingMutableLeaves error:nil];
BOOL mute = [[dataDic valueForKey:@"mute"] boolValue];
if (mute) {
NSLog(@"用户%@被禁言", [dataDic valueForKey:@"muteUserNick"]);
} else {
NSLog(@"用户%@被解除禁言",[dataDic valueForKey:@"muteUserNick"])
}
}
break;
... ...
}
Android:
chatService.addEventHandler(new SampleChatEventHandler() {
@Override
public void onCommentMutedOrCancel(MuteCommentEvent event) {
// 被禁言的用户ID
String muteUserOpenId = event.muteUserOpenId;
boolean mute = event.mute;
boolean isSelf = TextUtils.equals(muteUserOpenId, Const.getCurrentUserId());
showToast(String.format("%s被%s了",
isSelf ? "你" : event.muteUserNick,
mute ? "禁言" : "取消禁言"
));
}
});
Web:
// 获取事件列表
const { EventNameEnum } = window.RoomPaasSdk
// 监听禁言消息通知
chatService.on(EventNameEnum.PaaSChatMuteUser, (event) => {
console.log(event.data.mute ? '已被禁言' : '已取消禁言')
})
Windows:
//继承ChatEventListener,并重写OnMuteUserComment方法
virtual void OnMuteUserComment(const MuteUserCommentEventModel& event) override {
}
接收全员禁言消息
iOS:
// 需要设置AIRBRoomChannelProtocol的delegate并实现以下方法,监听如下事件,解析JSON内容
- (void) onAIRBRoomChannelEvent:(AIRBRoomChannelEvent) event info:(NSDictionary*)info
{
case AIRBRoomChannelEventMessageReceived: {
AIRBRoomChannelMessageType type = [[info valueForKey:@"type"] intValue];
switch (type)
{
case AIRBRoomChannelMessageTypeChatAllUsersCommentBannedOrNot:
{
NSData *turnData = [[info valueForKey:@"data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:turnData options:NSJSONReadingMutableLeaves error:nil];
BOOL mute = [[dataDic valueForKey:@"mute"] boolValue];
if (mute) {
NSLog(@"全体禁言开启");
} else {
NSLog(@"全体禁言解除");
}
}
break;
... ...
}
Android:
chatService.addEventHandler(new SampleChatEventHandler() {
@Override
public void onCommentAllMutedOrCancel(MuteAllCommentEvent event) {
showToast(String.format("全员被%s了", event.mute ? "禁言" : "取消禁言"));
}
});
Web:
// 获取事件列表
const { EventNameEnum } = window.RoomPaasSdk
// 监听禁言消息通知
chatService.on(EventNameEnum.PaaSChatMuteAll, (event) => {
console.log(event.data.mute ? '已全员禁言' : '已取消全员禁言')
})
Windows:
//继承ChatEventListener,并重写OnMuteAllComment方法
virtual void OnMuteAllComment(const MuteAllCommentEventModel& event) override {
}