禁言用户

更新时间: 2022-02-25 14:54:45

本文介绍如何禁言指定用户或禁言全体用户。

说明

  • 注意,只有当前房间的创建者或者管理员,才能禁言用户;房间内其他人禁言无效。

  • 当前房间的创建者或者管理员不会被其他管理员禁言。

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 {

}

阿里云首页 音视频终端 SDK 相关技术圈