群提示消息(Web SDK)

最近更新时间:2019-07-29 19:37:05

当有用户被邀请加入群组,或者有用户被移出群组时,群内会产生有提示消息,调用方可以根据需要展示给群组用户,或者忽略。如下图中,展示一条用户主动退群的提示消息。

群提示消息类型定义如下:

//群提示消息类型
var WEB_IM_GROUP_TIP_TYPE = {
    "JOIN": 1, //加入群组
    "QUIT": 2, //退出群组
    "KICK": 3, //被踢出群组
    "SET_ADMIN": 4, //被设置为管理员
    "CANCEL_ADMIN": 5, //被取消管理员
    "MODIFY_GROUP_INFO": 6, //修改群资料
    "MODIFY_MEMBER_INFO": 7//修改群成员信息
};

群提示消息对象定义如下:

// class Msg.Elem.GroupTip 群提示消息对象
Msg.Elem.GroupTip = function (opType, opUserId, groupId, groupName, userIdList) {
    this.opType = opType;//操作类型
    this.opUserId = opUserId;//操作者 ID
    this.groupId = groupId;//群 ID
    this.groupName = groupName;//群名称
    this.userIdList = userIdList ? userIdList : [];//被操作的用户 ID 列表
    this.groupInfoList = [];//新的群资料信息,群资料变更时才有值
    this.memberInfoList = [];//新的群成员资料信息,群成员资料变更时才有值
    this.groupMemberNum = null;//群成员数,操作类型为加群或者退群时才有值
};
Msg.Elem.GroupTip.prototype.addGroupInfo = function (groupInfo) {
    this.groupInfoList.push(groupInfo);
};
Msg.Elem.GroupTip.prototype.addMemberInfo = function (memberInfo) {
    this.memberInfoList.push(memberInfo);
};
Msg.Elem.GroupTip.prototype.getOpType = function () {
    return this.opType;
};
Msg.Elem.GroupTip.prototype.getOpUserId = function () {
    return this.opUserId;
};
Msg.Elem.GroupTip.prototype.getGroupId = function () {
    return this.groupId;
};
Msg.Elem.GroupTip.prototype.getGroupName = function () {
    return this.groupName;
};
Msg.Elem.GroupTip.prototype.getUserIdList = function () {
    return this.userIdList;
};
Msg.Elem.GroupTip.prototype.getGroupInfoList = function () {
    return this.groupInfoList;
};
Msg.Elem.GroupTip.prototype.getMemberInfoList = function () {
    return this.memberInfoList;
};
Msg.Elem.GroupTip.prototype.getGroupMemberNum = function () {
    return this.groupMemberNum;
};
Msg.Elem.GroupTip.prototype.setGroupMemberNum = function (groupMemberNum) {
    return this.groupMemberNum = groupMemberNum;
};
Msg.Elem.GroupTip.prototype.toHtml = function () {
    var text = "[群提示消息]";
    var maxIndex = WEB_IM_GROUP_TIP_MAX_USER_COUNT - 1;
    switch (this.opType) {
        case WEB_IM_GROUP_TIP_TYPE.JOIN://加入群
            //代码省略
            break;
        case WEB_IM_GROUP_TIP_TYPE.QUIT://退出群
            //代码省略
            break;
        case WEB_IM_GROUP_TIP_TYPE.KICK://踢出群
            //代码省略
            break;
        case WEB_IM_GROUP_TIP_TYPE.SET_ADMIN://设置管理员
            //代码省略
            break;
        case WEB_IM_GROUP_TIP_TYPE.CANCEL_ADMIN://取消管理员
            //代码省略
            break;
        case WEB_IM_GROUP_TIP_TYPE.MODIFY_GROUP_INFO://群资料变更
            //代码省略
            break;
        case WEB_IM_GROUP_TIP_TYPE.MODIFY_MEMBER_INFO://群成员资料变更(禁言时间)
            //代码省略
            break;
        default:
            text += "未知群提示消息类型:type=" + this.opType;
            break;
    }
    return text;
};

用户被邀请加入群组

触发时机:当有用户被邀请加入群组时,群组内会由系统发出通知,开发者可选择展示样式。可以更新群成员列表。 收到的消息 type 为 WEB_IM_GROUP_TIP_TYPE.JOIN

Msg.Elem.GroupTip 成员方法:

方法 说明
getOpType() WEB_IM_GROUP_TIP_TYPE.JOIN
getOpUserId() 邀请人 ID
getGroupName() 群名
getUserIdList() 被邀请入群的用户 ID 列表
getGroupMemberNum() 获取当前群成员数

示例:

case WEB_IM_GROUP_TIP_TYPE.JOIN://加入群
        text += this.opUserId + "邀请了";
        for (var m in this.userIdList) {
            text += this.userIdList[m] + ",";
            if (this.userIdList.length > WEB_IM_GROUP_TIP_MAX_USER_COUNT && m == maxIndex) {
                text += "等" + this.userIdList.length + "人";
                break;
            }
        }
        text += "加入该群";
        break;

用户主动退出群组

触发时机:当有用户主动退群时,群组内会由系统发出通知。可以选择更新群成员列表。收到的消息 type 为 WEB_IM_GROUP_TIP_TYPE.QUIT

Msg.Elem.GroupTip 成员方法:

方法 说明
getOpType() WEB_IM_GROUP_TIP_TYPE.QUIT
getOpUserId() 退群用户 ID
getGroupName() 群名
getGroupMemberNum() 获取当前群成员数

示例:

case WEB_IM_GROUP_TIP_TYPE.QUIT://退出群
    text += this.opUserId + "主动退出该群";
    break;

用户被踢出群组

触发时机:当有用户被踢出群组时,群组内会由系统发出通知。可以更新群成员列表。收到的消息 type 为 WEB_IM_GROUP_TIP_TYPE.KICK

Msg.Elem.GroupTip 成员方法:

方法 说明
getOpType() WEB_IM_GROUP_TIP_TYPE.KICK
getOpUserId() 踢人 ID
getGroupName() 群名
getUserIdList() 被踢出群的用户 ID 列表

示例:

case WEB_IM_GROUP_TIP_TYPE.KICK://踢出群
    text += this.opUserId + "将";
    for (var m in this.userIdList) {
        text += this.userIdList[m] + ",";
        if (this.userIdList.length > WEB_IM_GROUP_TIP_MAX_USER_COUNT && m == maxIndex) {
            text += "等" + this.userIdList.length + "人";
            break;
        }
    }
    text += "踢出该群";
    break;

用户被设置成管理员

触发时机:当有用户被设置为管理员时,群组内会由系统发出通知。如果界面有显示是否管理员,此时可更新管理员标识。收到的消息 type 为 WEB_IM_GROUP_TIP_TYPE.SET_ADMIN

Msg.Elem.GroupTip 成员方法:

方法 说明
getOpType() WEB_IM_GROUP_TIP_TYPE.SET_ADMIN
getOpUserId() 设置者 ID
getGroupName() 群名
getUserIdList() 被设置成管理员的用户 ID 列表

示例:

case WEB_IM_GROUP_TIP_TYPE.SET_ADMIN://设置管理员
    text += this.opUserId + "将";
    for (var m in this.userIdList) {
        text += this.userIdList[m] + ",";
        if (this.userIdList.length > WEB_IM_GROUP_TIP_MAX_USER_COUNT && m == maxIndex) {
            text += "等" + this.userIdList.length + "人";
            break;
        }
    }
    text += "设为管理员";
    break;

用户被取消管理员身份

触发时机:当有用户被被取消管理员身份时,群组内会由系统发出通知。如果界面有显示是否管理员,此时可更新管理员标识。收到的消息 type 为 WEB_IM_GROUP_TIP_TYPE.CANCEL_ADMIN

Msg.Elem.GroupTip 成员方法:

方法 说明
getOpType() WEB_IM_GROUP_TIP_TYPE.CANCEL_ADMIN
getOpUserId() 取消者 ID
getGroupName() 群名
getUserIdList() 被取消管理员身份的用户 ID 列表

示例:

case WEB_IM_GROUP_TIP_TYPE.CANCEL_ADMIN://取消管理员
    text += this.opUserId + "取消";
    for (var m in this.userIdList) {
        text += this.userIdList[m] + ",";
        if (this.userIdList.length > WEB_IM_GROUP_TIP_MAX_USER_COUNT && m == maxIndex) {
            text += "等" + this.userIdList.length + "人";
            break;
        }
    }
    text += "的管理员资格";
    break;

群组资料变更

触发时机:当群资料变更,如群名、群简介等,会有系统消息发出,可更新相关展示字段。或者选择性把消息展示给用户。收到的消息 type 为 WEB_IM_GROUP_TIP_TYPE.MODIFY_GROUP_INFO

Msg.Elem.GroupTip 成员方法:

方法 说明
getOpType() WEB_IM_GROUP_TIP_TYPE.MODIFY_GROUP_INFO
getOpUserId() 修改群资料的用户 ID
getGroupName() 群名
getUserIdList() 群变更的具体资料信息,为 Msg.Elem.GroupTip.GroupInfo 对象列表

变更的群资料信息对象定义如下:

// class Msg.Elem.GroupTip.GroupInfo,变更的群资料信息对象
Msg.Elem.GroupTip.GroupInfo = function (type, value) {
    this.type = type;//群资料信息类型
    this.value = value;//对应的值
};
Msg.Elem.GroupTip.GroupInfo.prototype.getType = function () {
    return this.type;
};
Msg.Elem.GroupTip.GroupInfo.prototype.getValue = function () {
    return this.value;
};

群提示消息-群资料变更类型定义如下:

//群提示消息-群资料变更类型
var WEB_IM_GROUP_TIP_MODIFY_GROUP_INFO_TYPE = {
    "FACE_URL": 1, //修改群头像 URL
    "NAME": 2, //修改群名称
    "OWNER": 3, //修改群主
    "NOTIFICATION": 4, //修改群公告
    "INTRODUCTION": 5//修改群简介
};

示例:

case WEB_IM_GROUP_TIP_TYPE.MODIFY_GROUP_INFO://群资料变更
    text += this.opUserId + "修改了群资料:";
    for (var m in this.groupInfoList) {
        var type = this.groupInfoList[m].getType();
        var value = this.groupInfoList[m].getValue();
        switch (type) {
            case WEB_IM_GROUP_TIP_MODIFY_GROUP_INFO_TYPE.FACE_URL:
                text += "群头像为" + value + "; ";
                break;
            case WEB_IM_GROUP_TIP_MODIFY_GROUP_INFO_TYPE.NAME:
                text += "群名称为" + value + "; ";
                break;
            case WEB_IM_GROUP_TIP_MODIFY_GROUP_INFO_TYPE.OWNER:
                text += "群主为" + value + "; ";
                break;
            case WEB_IM_GROUP_TIP_MODIFY_GROUP_INFO_TYPE.NOTIFICATION:
                text += "群公告为" + value + "; ";
                break;
            case WEB_IM_GROUP_TIP_MODIFY_GROUP_INFO_TYPE.INTRODUCTION:
                text += "群简介为" + value + "; ";
                break;
            default:
                text += "未知信息为:type=" + type + ",value=" + value + "; ";
                break;
        }
    }
    break;

群成员资料变更

触发时机:当群成员的群相关资料变更时,会有系统消息发出,可更新相关字段展示,或者选择性把消息展示给用户。此处所说资料变更仅指与群相关的资料变更,例如禁言时间、成员角色变更等,不包括用户昵称等本身资料,目前仅支持禁言时间通知。收到的消息 type 为 WEB_IM_GROUP_TIP_TYPE.MODIFY_MEMBER_INFO

注意:

ChatRoom 和 AVChatRoom 设置群成员禁言时间,不会收到相应的群提示消息。

Msg.Elem.GroupTip 成员方法:

方法 说明
getOpType() WEB_IM_GROUP_TIP_TYPE.MODIFY_MEMBER_INFO
getOpUserId() 修改者 ID
getGroupName() 群名
getUserIdList() 变更的群成员的具体资料信息,为 Msg.Elem.GroupTip.MemberInfo 对象列表

变更的群成员资料信息对象定义如下:

// class Msg.Elem.GroupTip.MemberInfo,变更的群成员资料信息对象
Msg.Elem.GroupTip.MemberInfo = function (userId, shutupTime) {
    this.userId = userId;//群成员 ID
    this.shutupTime = shutupTime;//群成员被禁言时间,0 表示取消禁言,大于 0 表示被禁言时长,单位:秒
};
Msg.Elem.GroupTip.MemberInfo.prototype.getUserId = function () {
    return this.userId;
};
Msg.Elem.GroupTip.MemberInfo.prototype.getShutupTime = function () {
    return this.shutupTime;
};

示例:

case WEB_IM_GROUP_TIP_TYPE.MODIFY_MEMBER_INFO://群成员资料变更(禁言时间)
    text += this.opUserId + "修改了群成员资料:";
    for (var m in this.memberInfoList) {
        var userId = this.memberInfoList[m].getUserId();
        var shutupTime = this.memberInfoList[m].getShutupTime();
        text += userId + ": ";
        if (shutupTime != null && shutupTime !== undefined) {
            if (shutupTime == 0) {
                text += "取消禁言; ";
            } else {
                text += "禁言" + shutupTime + "秒; ";
            }
        } else {
            text += " shutupTime为空";
        }
        if (this.memberInfoList.length > WEB_IM_GROUP_TIP_MAX_USER_COUNT && m == maxIndex) {
            text += "等" + this.memberInfoList.length + "人";
            break;
        }
    }
    break;